X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=src%2Fngircd%2Fconn-func.c;h=b56e0f0742fb5298f5d53bac0583c40a52b02873;hp=a50f0daadded8806ad0a6be459da4762fde6bf0e;hb=5a424f60dad660815d89285da9a7a07e4991461a;hpb=03628dbeaf40a9de34b3eb6d5bf6dd34eed8248c diff --git a/src/ngircd/conn-func.c b/src/ngircd/conn-func.c index a50f0daa..b56e0f07 100644 --- a/src/ngircd/conn-func.c +++ b/src/ngircd/conn-func.c @@ -9,7 +9,6 @@ * Please read the file COPYING, README and AUTHORS for more information. */ - #define CONN_MODULE #include "portab.h" @@ -31,13 +30,30 @@ #include "conn-func.h" +/** + * Update "idle timestamp", the time of the last visible user action + * (e. g. like sending messages, joining or leaving channels). + * + * @param Idx Connection index. + */ GLOBAL void -Conn_UpdateIdle( CONN_ID Idx ) +Conn_UpdateIdle(CONN_ID Idx) { - assert( Idx > NONE ); - My_Connections[Idx].lastprivmsg = time( NULL ); + assert(Idx > NONE); + My_Connections[Idx].lastprivmsg = time(NULL); } +/** + * Update "ping timestamp", the time of the last outgoing PING request. + * + * @param Idx Connection index. + */ +GLOBAL void +Conn_UpdatePing(CONN_ID Idx) +{ + assert(Idx > NONE); + My_Connections[Idx].lastping = time(NULL); +} /* * Get signon time of a connection. @@ -66,38 +82,41 @@ Conn_LastPing( CONN_ID Idx ) } /* Conn_LastPing */ +/** + * Add "penalty time" for a connection. + * + * During the "penalty time" the socket is ignored completely, no new data + * is read. This function only increases the penalty, it is not possible to + * decrease the penalty time. + * + * @param Idex Connection index. + * @param Seconds Seconds to add. + * @see Conn_ResetPenalty + */ GLOBAL void -Conn_SetPenalty( CONN_ID Idx, time_t Seconds ) +Conn_SetPenalty(CONN_ID Idx, time_t Seconds) { - /* set Penalty-Delay for a socket. - * during the penalty, the socket is ignored completely, no new - * data is read. This function only increases the penalty, it is - * not possible to decrease the penalty time. - */ time_t t; - - assert( Idx > NONE ); - assert( Seconds >= 0 ); - t = time( NULL ) + Seconds; - if (t > My_Connections[Idx].delaytime) + assert(Idx > NONE); + assert(Seconds >= 0); + + t = time(NULL); + if (My_Connections[Idx].delaytime < t) My_Connections[Idx].delaytime = t; + My_Connections[Idx].delaytime += Seconds; + #ifdef DEBUG - Log(LOG_DEBUG, "Add penalty time on connection %d: %ld second(s).", - Idx, (long)Seconds); + Log(LOG_DEBUG, + "Add penalty time on connection %d: %ld second%s, total %ld second%s.", + Idx, (long)Seconds, Seconds != 1 ? "s" : "", + My_Connections[Idx].delaytime - t, + My_Connections[Idx].delaytime - t != 1 ? "s" : ""); #endif } /* Conn_SetPenalty */ -GLOBAL void -Conn_ResetPenalty( CONN_ID Idx ) -{ - assert( Idx > NONE ); - My_Connections[Idx].delaytime = 0; -} /* Conn_ResetPenalty */ - - GLOBAL void Conn_ClearFlags( void ) { @@ -118,8 +137,6 @@ Conn_Flag( CONN_ID Idx ) GLOBAL void Conn_SetFlag( CONN_ID Idx, int Flag ) { - /* Connection markieren */ - assert( Idx > NONE ); My_Connections[Idx].flag = Flag; } /* Conn_SetFlag */ @@ -128,9 +145,6 @@ Conn_SetFlag( CONN_ID Idx, int Flag ) GLOBAL CONN_ID Conn_First( void ) { - /* Connection-Struktur der ersten Verbindung liefern; - * Ist keine Verbindung vorhanden, wird NONE geliefert. */ - CONN_ID i; for( i = 0; i < Pool_Size; i++ ) @@ -144,9 +158,6 @@ Conn_First( void ) GLOBAL CONN_ID Conn_Next( CONN_ID Idx ) { - /* Naechste Verbindungs-Struktur liefern; existiert keine - * weitere, so wird NONE geliefert. */ - CONN_ID i = NONE; assert( Idx > NONE );