commit cddc7e719de391564b9667e734dc15456afec5d8 from: Florian Westphal date: Wed May 09 13:21:38 2007 UTC make needlesly global function Conn_Write static. (from HEAD) commit - 001c3bb1b4607f74a1e725c3f566a959aa47d3ec commit + cddc7e719de391564b9667e734dc15456afec5d8 blob - eec9beb5653d93c097704044d58fe7357b180c1c blob + 3333b31bd24c5e37940479f5316786e8d2852654 --- src/ngircd/conn.c +++ src/ngircd/conn.c @@ -17,7 +17,7 @@ #include "portab.h" #include "io.h" -static char UNUSED id[] = "$Id: conn.c,v 1.198.2.4 2007/05/02 12:22:44 fw Exp $"; +static char UNUSED id[] = "$Id: conn.c,v 1.198.2.5 2007/05/09 13:21:38 fw Exp $"; #include "imp.h" #include @@ -83,6 +83,7 @@ static char UNUSED id[] = "$Id: conn.c,v 1.198.2.4 200 static bool Handle_Write PARAMS(( CONN_ID Idx )); +static bool Conn_Write PARAMS(( CONN_ID Idx, char *Data, size_t Len )); static int New_Connection PARAMS(( int Sock )); static CONN_ID Socket2Index PARAMS(( int Sock )); static void Read_Request PARAMS(( CONN_ID Idx )); @@ -607,36 +608,40 @@ va_dcl } /* Conn_WriteStr */ -GLOBAL bool +/** + * Append Data to outbound write buf. + * @param Idx Index fo the connection. + * @param Data pointer to data + * @param Len length of Data + * @return true on success, false otherwise. + */ +static bool Conn_Write( CONN_ID Idx, char *Data, size_t Len ) { - /* Daten in Socket schreiben. Bei "fatalen" Fehlern wird - * der Client disconnectiert und false geliefert. */ assert( Idx > NONE ); assert( Data != NULL ); assert( Len > 0 ); - /* Ist der entsprechende Socket ueberhaupt noch offen? In einem - * "Handler-Durchlauf" kann es passieren, dass dem nicht mehr so - * ist, wenn einer von mehreren Conn_Write()'s fehlgeschlagen ist. - * In diesem Fall wird hier einfach ein Fehler geliefert. */ + /* Is the socket still open? A previous call to Conn_Write() + * may have closed the connection due to a fatal error. + * In this case it is sufficient to return an error */ if( My_Connections[Idx].sock <= NONE ) { LogDebug("Skipped write on closed socket (connection %d).", Idx ); return false; } - /* Pruefen, ob im Schreibpuffer genuegend Platz ist. Ziel ist es, - * moeglichts viel im Puffer zu haben und _nicht_ gleich alles auf den - * Socket zu schreiben (u.a. wg. Komprimierung). */ + /* check if outbound buffer has enough space for data. + * the idea is to keep data buffered before sending, e.g. to improve + * compression */ if( array_bytes(&My_Connections[Idx].wbuf) >= WRITEBUFFER_LEN) { - /* Der Puffer ist dummerweise voll. Jetzt versuchen, den Puffer - * zu schreiben, wenn das nicht klappt, haben wir ein Problem ... */ + /* Buffer is full, flush. Handle_Write deals with low-level errors, if any. */ if( ! Handle_Write( Idx )) return false; /* check again: if our writebuf is twice als large as the initial limit: Kill connection */ if( array_bytes(&My_Connections[Idx].wbuf) >= (WRITEBUFFER_LEN*2)) { - Log( LOG_NOTICE, "Write buffer overflow (connection %d)!", Idx ); + Log(LOG_NOTICE, "Write buffer overflow (connection %d, size %lu byte)!", Idx, + (unsigned long) array_bytes(&My_Connections[Idx].wbuf)); Conn_Close( Idx, "Write buffer overflow!", NULL, false ); return false; } @@ -644,13 +649,13 @@ Conn_Write( CONN_ID Idx, char *Data, size_t Len ) #ifdef ZLIB if ( Conn_OPTION_ISSET( &My_Connections[Idx], CONN_ZIP )) { - /* Daten komprimieren und in Puffer kopieren */ + /* compress and move data to write buffer */ if( ! Zip_Buffer( Idx, Data, Len )) return false; } else #endif { - /* Daten in Puffer kopieren */ + /* copy data to write buffer */ if (!array_catb( &My_Connections[Idx].wbuf, Data, Len )) return false; @@ -692,7 +697,7 @@ Conn_Close( CONN_ID Idx, char *LogMsg, char *FwdMsg, b /* Mark link as "closing" */ Conn_OPTION_ADD( &My_Connections[Idx], CONN_ISCLOSING ); - + if (LogMsg) txt = LogMsg; else @@ -720,7 +725,6 @@ Conn_Close( CONN_ID Idx, char *LogMsg, char *FwdMsg, b (double)My_Connections[Idx].bytes_out / 1024); } #endif - /* Send ERROR to client (see RFC!) */ if (FwdMsg) Conn_WriteStr(Idx, "ERROR :%s", FwdMsg); @@ -1631,9 +1635,9 @@ Conn_GetClient( CONN_ID Idx ) assert( Idx >= 0 ); c = array_get(&My_ConnArray, sizeof (CONNECTION), (size_t)Idx); - + assert(c != NULL); - + return c ? c->client : NULL; } blob - b1e158e0266a6771b89accac0cde5e66a0c8df1a blob + 0e7620561529a0f79f95f17ed57d69c7efa4143b --- src/ngircd/conn.h +++ src/ngircd/conn.h @@ -8,7 +8,7 @@ * (at your option) any later version. * Please read the file COPYING, README and AUTHORS for more information. * - * $Id: conn.h,v 1.42 2006/05/10 21:24:01 alex Exp $ + * $Id: conn.h,v 1.42.2.1 2007/05/09 13:21:38 fw Exp $ * * Connection management (header) */ @@ -88,7 +88,6 @@ GLOBAL void Conn_ExitListeners PARAMS(( void )); GLOBAL void Conn_Handler PARAMS(( void )); -GLOBAL bool Conn_Write PARAMS(( CONN_ID Idx, char *Data, size_t Len )); GLOBAL bool Conn_WriteStr PARAMS(( CONN_ID Idx, char *Format, ... )); GLOBAL void Conn_Close PARAMS(( CONN_ID Idx, char *LogMsg, char *FwdMsg, bool InformClient ));