commit - a1dff152521b51afd2374faacd1f033473bb1f27
commit + 93a39e8782525b00ff9f1bdfae3d2eaa1ac87594
blob - 2e04eeb5bf3ea1654274bab0c05e259973bf25cb
blob + 3a628ac7485dfae0f54f7a1752f172f0417f7bc6
--- ChangeLog
+++ ChangeLog
miteinander ueber komprimiert Links kommunizieren.
- Handling der Schreibpuffer umgestellt: Server sollte schneller arbeiten.
- SQUIT wird nicht mehr doppelt an andere Server weitergeleitet.
+ - Der Server versucht nun vor dem Schliessen einer Verbindung Daten, die
+ noch im Schreibpuffer stehen, zu senden.
ngIRCd 0.5.4, 24.11.2002
--
-$Id: ChangeLog,v 1.133 2002/11/28 14:32:18 alex Exp $
+$Id: ChangeLog,v 1.134 2002/11/28 16:56:20 alex Exp $
blob - 7ed61a3fdbe8e95a25c9dfe4e6398173bcc69aa6
blob + bd7526975b98cf0fb73be939d52ce3f0efcbd600
--- src/ngircd/conn.c
+++ src/ngircd/conn.c
* 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.97 2002/11/28 12:17:38 alex Exp $
+ * $Id: conn.c,v 1.98 2002/11/28 16:56:20 alex Exp $
*
* connect.h: Verwaltung aller Netz-Verbindungen ("connections")
*/
else Conn_WriteStr( Idx, "ERROR :Closing connection." );
if( My_Connections[Idx].sock == NONE ) return;
}
+
+ /* zunaechst versuchen, noch im Schreibpuffer vorhandene
+ * Daten auf den Socket zu schreiben ... */
+ Try_Write( Idx );
if( close( My_Connections[Idx].sock ) != 0 )
{
LOCAL BOOLEAN
Try_Write( CONN_ID Idx )
{
- /* Versuchen, Daten aus dem Schreib-Puffer in den
- * Socket zu schreiben. */
+ /* Versuchen, Daten aus dem Schreib-Puffer in den Socket zu
+ * schreiben. TRUE wird geliefert, wenn entweder keine Daten
+ * zum Versenden vorhanden sind oder erfolgreich bearbeitet
+ * werden konnten. Im Fehlerfall wird FALSE geliefert und
+ * die Verbindung geschlossen. */
fd_set write_socket;
struct timeval tv;
assert( Idx > NONE );
assert( My_Connections[Idx].sock > NONE );
- assert( My_Connections[Idx].wdatalen > 0 );
+
+ /* sind ueberhaupt Daten vorhanden? */
+#ifdef USE_ZLIB
+ if(( ! My_Connections[Idx].wdatalen > 0 ) && ( ! My_Connections[Idx].zip.wdatalen )) return TRUE;
+#else
+ if( ! My_Connections[Idx].wdatalen > 0 ) return TRUE;
+#endif
/* Timeout initialisieren: 0 Sekunden, also nicht blockieren */
tv.tv_sec = 0; tv.tv_usec = 0;