X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fngircd%2Fconn-func.c;h=964767442ce8dfb1b3bc70ee443a4ceec8b6579c;hb=4dc940f59e8499b929b8bad8791a7d337cc62a23;hp=15bc7cc2663c1f0b94ff21e58da7043274ce17e2;hpb=60eac5e952ef4096557d63e323e34498cc88928f;p=ngircd-alex.git diff --git a/src/ngircd/conn-func.c b/src/ngircd/conn-func.c index 15bc7cc2..96476744 100644 --- a/src/ngircd/conn-func.c +++ b/src/ngircd/conn-func.c @@ -7,15 +7,17 @@ * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * Please read the file COPYING, README and AUTHORS for more information. - * - * Connection management: Global functions */ - #define CONN_MODULE #include "portab.h" +/** + * @file + * Connection management: Global functions + */ + #include "imp.h" #include #include @@ -28,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. @@ -63,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 ) {