Complete.Org: Mailing Lists: Archives: freeciv-dev: March 2003:
[Freeciv-Dev] Re: (PR#3664) Server doesn't react while send_all_info(&pc
Home

[Freeciv-Dev] Re: (PR#3664) Server doesn't react while send_all_info(&pc

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: ue80@xxxxxxxxxxxxxxxxxxxxx
Subject: [Freeciv-Dev] Re: (PR#3664) Server doesn't react while send_all_info(&pconn->self);
From: "Raimar Falke" <rf13@xxxxxxxxxxxxxxxxx>
Date: Mon, 10 Mar 2003 11:50:11 -0800
Reply-to: rt@xxxxxxxxxxxxxx

On Mon, Mar 10, 2003 at 08:40:01AM -0800, ue80@xxxxxxxxxxxxxxxxxxxxx wrote:
> On Mon, Mar 10, 2003 at 08:23:59AM -0800, Raimar Falke wrote:
> > On Sat, Mar 08, 2003 at 12:25:56PM -0800, ue80@xxxxxxxxxxxxxxxxxxxxx wrote:
> > > 
> > > Hi,
> > > 
> > > duriing the time the server needs to seen all infomrmation to 1 client
> > > (especially while reconnection) the server doesn't react. No chatline,
> > > no moves from units ...
> > > That is really bad especially when playing with many players.
> > 
> > I'm not sure where the server blocks for the writes. Every client
> > socket at the server is non-blocking. And write_socket_data tests for
> > the socket's ability to write to it. I also didn't found a loop which
> > tries to empty the connection buffer.
> 
> I don't know how flush_buffer really works but i think that it waits
> until the all data is sended before going back.

The loop which I didn't found in the first try is in flush_packets.

However it looks like flush_packets will wait at most game.netwait
seconds. The default for this is 4s. However flush_packets is called
for every line of map tiles in send_all_known_tiles. So in the default
case send_all_known_tiles can block up to 50*4s = 200s = 3min+. If the
player is slower than this the connection will be cut after these
200s.

No sure about a solution. It seems possible but I'm not sure how many
problems I overlooked.

        Raimar

-- 
 email: rf13@xxxxxxxxxxxxxxxxx
 "Microsoft DNS service terminates abnormally when it recieves a response
  to a DNS query that was never made.
  Fix Information: Run your DNS service on a different platform."
    -- MS service information on bugtraq




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