]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/conn.c
- Timeouts ausgehender Verbindungen werden besser erkannt (z.B. unter Cygwin).
[ngircd-alex.git] / src / ngircd / conn.c
index 5942f97d2ea0859e5653254c67a455cca63260c8..16dfbdb4e517eb569f55bd68176b1f54a2798eff 100644 (file)
@@ -9,11 +9,20 @@
  * 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.43 2002/03/02 00:29:11 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.
  *
@@ -389,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++ )
@@ -577,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 */
 
@@ -964,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 );
                        }
                }
        }