X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=src%2Fngircd%2Fconn.c;h=16dfbdb4e517eb569f55bd68176b1f54a2798eff;hp=e60cde71b3d1e1fc0a5461366c7c1c2ba223f3d1;hb=5457e0788a0b3ce610ad909e93d451c86b126803;hpb=6da91c34b4c525501f403e192a43448c15f23aca diff --git a/src/ngircd/conn.c b/src/ngircd/conn.c index e60cde71..16dfbdb4 100644 --- a/src/ngircd/conn.c +++ b/src/ngircd/conn.c @@ -9,11 +9,23 @@ * 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.42 2002/03/02 00:23:32 alex Exp $ + * $Id: conn.c,v 1.45 2002/03/02 02:44:01 alex Exp $ * * connect.h: Verwaltung aller Netz-Verbindungen ("connections") * * $Log: conn.c,v $ + * Revision 1.45 2002/03/02 02:44:01 alex + * - Timeouts ausgehender Verbindungen werden besser erkannt (z.B. unter Cygwin). + * - Idle-Time der Hauptschleife [Conn_Handle()] erhoeht: weniger Last. + * + * Revision 1.44 2002/03/02 00:43:31 alex + * - bei abgebrochene ausgehende Server-Verbindungen wird der naechste Ver- + * bindungsversuch in RECONNECT_DELAY Sekunden (3) unternommen und nicht + * mehr "ConnectRetry" Sekunden gewartet. + * + * Revision 1.43 2002/03/02 00:29:11 alex + * - der Wert der Konfigurations-Variable "ConnectRetry" wird besser beachtet. + * * Revision 1.42 2002/03/02 00:23:32 alex * - ausgehende Verbindungen werden nun asyncron connectiert und blockieren * nicht mehr den Server. Dadurch waren einige Aenderungen noetig. @@ -386,8 +398,8 @@ GLOBAL VOID Conn_Handler( INT Timeout ) Check_Connections( ); /* Timeout initialisieren */ - tv.tv_sec = 0; - tv.tv_usec = 50000; + tv.tv_sec = 2; + tv.tv_usec = 0; /* noch volle Lese-Buffer suchen */ for( i = 0; i < MAX_CONNECTIONS; i++ ) @@ -574,10 +586,13 @@ GLOBAL VOID Conn_Close( CONN_ID Idx, CHAR *LogMsg, CHAR *FwdMsg, BOOLEAN InformC free( My_Connections[Idx].res_stat ); } - /* Bei Server-Verbindungen lasttry-Zeitpunkt auf "jetzt" setzen */ - if( My_Connections[Idx].our_server >= 0 ) Conf_Server[My_Connections[Idx].our_server].lasttry = time( NULL ); + /* Bei Server-Verbindungen lasttry-Zeitpunkt so setzen, dass + * der naechste Verbindungsversuch in RECONNECT_DELAY Sekunden + * gestartet wird */ + if( My_Connections[Idx].our_server >= 0 ) Conf_Server[My_Connections[Idx].our_server].lasttry = time( NULL ) - Conf_ConnectRetry + RECONNECT_DELAY; FD_CLR( My_Connections[Idx].sock, &My_Sockets ); + FD_CLR( My_Connections[Idx].sock, &My_Connects ); My_Connections[Idx].sock = NONE; } /* Conn_Close */ @@ -704,6 +719,10 @@ LOCAL BOOLEAN Handle_Write( CONN_ID Idx ) FD_CLR( My_Connections[Idx].sock, &My_Sockets ); close( My_Connections[Idx].sock ); Init_Conn_Struct( Idx ); + + /* Bei Server-Verbindungen lasttry-Zeitpunkt auf "jetzt" setzen */ + Conf_Server[My_Connections[Idx].our_server].lasttry = time( NULL ); + return FALSE; } Log( LOG_DEBUG, "Connection %d with \"%s:%d\" established, now sendig PASS and SERVER ...", Idx, My_Connections[Idx].host, Conf_Server[My_Connections[Idx].our_server].port ); @@ -957,7 +976,7 @@ LOCAL VOID Check_Connections( VOID ) { /* Timeout */ Log( LOG_DEBUG, "Connection %d timed out ...", i ); - Conn_Close( i, NULL, "Timeout", TRUE ); + Conn_Close( i, NULL, "Timeout", FALSE ); } } }