Complete.Org: Mailing Lists: Archives: freeciv-dev: December 2001:
[Freeciv-Dev] Re: Server from Client
Home

[Freeciv-Dev] Re: Server from Client

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: Reinier Post <rp@xxxxxxxxxx>
Cc: Freeciv developers <freeciv-dev@xxxxxxxxxxx>
Subject: [Freeciv-Dev] Re: Server from Client
From: Daniel L Speyer <dspeyer@xxxxxxxxxxx>
Date: Fri, 28 Dec 2001 23:35:13 -0500 (EST)

On Fri, 28 Dec 2001, Reinier Post wrote:

> On Fri, Dec 28, 2001 at 12:29:22PM -0500, Daniel L Speyer wrote:
> 
> > OK, here's the problem:
> > Client 1 sends message to server
> > Client 2 sends message to server
> > Server answers client 1's message
> > Client 2 picks up answer to Client 1's message
> 
> In rfcstyle, it shouldn't (except as a comment).
> 
> End of problem.

Maybe, if the responce tracks are really clearly distinguished.  This can
still happen if multiple clients have the pipe (which the current version
doesn't use) or if something is communicationg through /proc, which should
probably be forbidden.

> 
> > Also, consider:
> > Client sends message 1
> > Server answers message 1
> > Client sends message 2
> > Client listens for responce to message 2
> > Client pick up responce to message 1
> > crash, burn, end of game
> > Server answers message 2
> 
> Impossible, as long as the server is single-threaded, which it will remain
> for some time to come.
> 

Perfectly possible.  This comes from the server replying to message 1 and
the client not picking it up.  Now, maybe this shouldn't happen, but it's
the sort of bug that can show up long afterward several files away.  Also,
any change in how the server responds to things would require a code audit
in the client to catch this sort of error.  That really doesn't seem like
good design.

Admittedly, this risk could be reduced if all this were put under some
sort of abstraction layer, which might be a good idea anyway, but it would
eliminate the /command capability of the chatline.

--Daniel Speyer
"May the /src be with you, always"


> -- 
> Reinier
> 
> 



[Prev in Thread] Current Thread [Next in Thread]