X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=src%2Fngircd%2Fconn.c;h=165d4678b472d41b729f90a09113055fda87bd97;hp=8f343ea418814102b3a0d2f02167860f33031c02;hb=c12dc45f17336141bb947275e12125e5736cf0b3;hpb=a2cdc08c396d6ba3906ffb9478ce2ac52257ae93 diff --git a/src/ngircd/conn.c b/src/ngircd/conn.c index 8f343ea4..165d4678 100644 --- a/src/ngircd/conn.c +++ b/src/ngircd/conn.c @@ -17,7 +17,7 @@ #include "portab.h" #include "io.h" -static char UNUSED id[] = "$Id: conn.c,v 1.172 2005/08/27 23:42:23 fw Exp $"; +static char UNUSED id[] = "$Id: conn.c,v 1.175 2005/08/29 11:11:15 alex Exp $"; #include "imp.h" #include @@ -741,8 +741,9 @@ Conn_Close( CONN_ID Idx, char *LogMsg, char *FwdMsg, bool InformClient ) /* Send statistics to client if registered as user: */ if ((c != NULL) && (Client_Type(c) == CLIENT_USER)) { Conn_WriteStr( Idx, - "NOTICE %s :%sConnection statistics: client %.1f kb, server %.1f kb.", - Client_ID(Client_ThisServer()), NOTICE_TXTPREFIX, + ":%s NOTICE %s :%sConnection statistics: client %.1f kb, server %.1f kb.", + Client_ID(Client_ThisServer()), Client_ID(c), + NOTICE_TXTPREFIX, (double)My_Connections[Idx].bytes_in / 1024, (double)My_Connections[Idx].bytes_out / 1024); } @@ -1158,13 +1159,13 @@ Handle_Buffer( CONN_ID Idx ) #endif char *ptr; int len, delta; - bool action, result; + bool result; #ifdef ZLIB bool old_z; #endif result = false; - do { + for (;;) { /* Check penalty */ if( My_Connections[Idx].delaytime > time( NULL )) return result; #ifdef ZLIB @@ -1196,7 +1197,6 @@ Handle_Buffer( CONN_ID Idx ) } #endif - action = false; if( ! ptr ) break; @@ -1214,8 +1214,8 @@ Handle_Buffer( CONN_ID Idx ) return false; } - if (len < 3) { /* request was empty (only '\r\n') */ - array_trunc(&My_Connections[Idx].rbuf); + if (len <= 2) { /* request was empty (only '\r\n') */ + array_moveleft(&My_Connections[Idx].rbuf, 1, delta); /* delta is either 1 or 2 */ break; } #ifdef ZLIB @@ -1223,28 +1223,27 @@ Handle_Buffer( CONN_ID Idx ) old_z = My_Connections[Idx].options & CONN_ZIP; #endif - if( len > delta ) - { - /* A Request was read */ - My_Connections[Idx].msg_in++; - if( ! Parse_Request( Idx, (char*)array_start(&My_Connections[Idx].rbuf) )) return false; - else action = true; + My_Connections[Idx].msg_in++; + if (!Parse_Request(Idx, (char*)array_start(&My_Connections[Idx].rbuf) )) + return false; - array_moveleft(&My_Connections[Idx].rbuf, 1, len); + result = true; + + array_moveleft(&My_Connections[Idx].rbuf, 1, len); #ifdef DEBUG - Log(LOG_DEBUG, "%d byte left in rbuf", array_bytes(&My_Connections[Idx].rbuf)); + Log(LOG_DEBUG, "%u byte left in rbuf", array_bytes(&My_Connections[Idx].rbuf)); #endif - } #ifdef ZLIB - if(( ! old_z ) && ( My_Connections[Idx].options & CONN_ZIP ) && ( array_bytes(&My_Connections[Idx].rbuf) > 0 )) + if(( ! old_z ) && ( My_Connections[Idx].options & CONN_ZIP ) && + ( array_bytes(&My_Connections[Idx].rbuf) > 0 )) { /* The last Command activated Socket-Compression. * Data that was read after that needs to be copied to Unzip-buf * for decompression */ if( array_bytes(&My_Connections[Idx].rbuf)> ZREADBUFFER_LEN ) { - /* No space left */ - Log( LOG_ALERT, "Can't move receive buffer: No space left in unzip buffer (need %d bytes)!", array_bytes(&My_Connections[Idx].rbuf )); + Log( LOG_ALERT, "Connection %d: No space left in unzip buf (need %u bytes)!", + Idx, array_bytes(&My_Connections[Idx].rbuf )); return false; } if (!array_copy( &My_Connections[Idx].zip.rbuf, &My_Connections[Idx].rbuf )) @@ -1252,12 +1251,12 @@ Handle_Buffer( CONN_ID Idx ) array_trunc(&My_Connections[Idx].rbuf); #ifdef DEBUG - Log( LOG_DEBUG, "Moved already received data (%d bytes) to uncompression buffer.", array_bytes(&My_Connections[Idx].zip.rbuf)); + Log( LOG_DEBUG, "Moved already received data (%u bytes) to uncompression buffer.", + array_bytes(&My_Connections[Idx].zip.rbuf)); #endif /* DEBUG */ } #endif /* ZLIB */ - if( action ) result = true; - } while( action ); + } return result; } /* Handle_Buffer */