<URL: http://bugs.freeciv.org/Ticket/Display.html?id=39131 >

> [pepeto - Wed Jun 25 11:30:21 2008]:
> 
> It actually occurs when the client connection is broken by the server
> whereas the server is reading a packet from. A simple example is when
> you attempt to cut yourself from the server. Then, your chat packet is
> parsed by the server, server breaks your connection and tries to send
> you processing_finished packet.
> 
> For an unknown reason by me, the client is not able to recognize
> anymore it is connected to the server after reconnection.
> 
> So it seems a double bug between the server and client side.

I traced the bug back to a missing initialization in
common/connection.c. The compression.frozen_level field
was not being cleared for new connections. So if it was
non-zero when a connection was lost, it would cause all
data to be stored into the compression buffer instead of
being sent for new connections.


-----------------------------------------------------------------------
絶やした。
diff --git a/common/connection.c b/common/connection.c
index ded24e4..48fc429 100644
--- a/common/connection.c
+++ b/common/connection.c
@@ -630,6 +630,7 @@ void connection_common_init(struct connection *pconn)
 
 #ifdef USE_COMPRESSION
   byte_vector_init(&pconn->compression.queue);
+  pconn->compression.frozen_level = 0;
 #endif
 }
 
_______________________________________________
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev

Reply via email to