diff options
| author | Alexander Barton <alex@barton.de> | 2002-09-26 15:59:02 +0000 |
|---|---|---|
| committer | Alexander Barton <alex@barton.de> | 2002-09-26 15:59:02 +0000 |
| commit | c50ecda71559f78b0548840f3ced3098b8896055 (patch) | |
| tree | 5958b89051e795bf1ca0a819d0ad1da7b315c52d /src | |
| parent | 9d928b240bc97ab96b3ff2999c64972874abd5f8 (diff) | |
| download | ngircd-c50ecda71559f78b0548840f3ced3098b8896055.tar.gz ngircd-c50ecda71559f78b0548840f3ced3098b8896055.zip | |
- Conn_Write() prueft nun, ob der Socket noch offen ist, ehe Daten gesendet werden.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ngircd/conn.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/ngircd/conn.c b/src/ngircd/conn.c index 76b0822b..aeef7a3e 100644 --- a/src/ngircd/conn.c +++ b/src/ngircd/conn.c @@ -9,7 +9,7 @@ * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. * - * $Id: conn.c,v 1.72 2002/09/07 22:34:44 alex Exp $ + * $Id: conn.c,v 1.73 2002/09/26 15:59:02 alex Exp $ * * connect.h: Verwaltung aller Netz-Verbindungen ("connections") */ @@ -359,7 +359,6 @@ va_dcl va_list ap; assert( Idx >= 0 ); - assert( My_Connections[Idx].sock > NONE ); assert( Format != NULL ); #ifdef PROTOTYPES @@ -393,10 +392,20 @@ Conn_Write( CONN_ID Idx, CHAR *Data, INT Len ) * der Client disconnectiert und FALSE geliefert. */ assert( Idx >= 0 ); - assert( My_Connections[Idx].sock > 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. */ + if( ! My_Connections[Idx].sock > NONE ) + { + Log( LOG_DEBUG, "Skipped write on closed socket (connection %d).", Idx ); + return FALSE; + } + /* pruefen, ob Daten im Schreibpuffer sind. Wenn ja, zunaechst * pruefen, ob diese gesendet werden koennen */ if( My_Connections[Idx].wdatalen > 0 ) |