X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fngircd%2Fconn-func.c;h=15bc7cc2663c1f0b94ff21e58da7043274ce17e2;hb=8605e9c0fe7ffa42149271c9af31288bd4a0dfac;hp=5f998985f6befe5dc83ae3eed95b3f3b7da4126d;hpb=774c6cda4dcbdaf230973d38d18c3609d7135b06;p=ngircd-alex.git diff --git a/src/ngircd/conn-func.c b/src/ngircd/conn-func.c index 5f998985..15bc7cc2 100644 --- a/src/ngircd/conn-func.c +++ b/src/ngircd/conn-func.c @@ -1,6 +1,6 @@ /* * ngIRCd -- The Next Generation IRC Daemon - * Copyright (c)2001,2002 by Alexander Barton (alex@barton.de) + * Copyright (c)2001-2008 Alexander Barton (alex@barton.de) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,11 +16,10 @@ #include "portab.h" -static char UNUSED id[] = "$Id: conn-func.c,v 1.7 2005/07/07 18:39:45 fw Exp $"; - #include "imp.h" #include -#include +#include +#include "log.h" #include "conn.h" #include "client.h" @@ -32,18 +31,25 @@ static char UNUSED id[] = "$Id: conn-func.c,v 1.7 2005/07/07 18:39:45 fw Exp $"; GLOBAL void Conn_UpdateIdle( CONN_ID Idx ) { - /* Idle-Timer zuruecksetzen */ - assert( Idx > NONE ); My_Connections[Idx].lastprivmsg = time( NULL ); } +/* + * Get signon time of a connection. + */ GLOBAL time_t -Conn_GetIdle( CONN_ID Idx ) +Conn_GetSignon(CONN_ID Idx) { - /* Idle-Time einer Verbindung liefern (in Sekunden) */ + assert(Idx > NONE); + return My_Connections[Idx].signon; +} +GLOBAL time_t +Conn_GetIdle( CONN_ID Idx ) +{ + /* Return Idle-Timer of a connetion */ assert( Idx > NONE ); return time( NULL ) - My_Connections[Idx].lastprivmsg; } /* Conn_GetIdle */ @@ -52,8 +58,6 @@ Conn_GetIdle( CONN_ID Idx ) GLOBAL time_t Conn_LastPing( CONN_ID Idx ) { - /* Zeitpunkt des letzten PING liefern */ - assert( Idx > NONE ); return My_Connections[Idx].lastping; } /* Conn_LastPing */ @@ -62,18 +66,24 @@ Conn_LastPing( CONN_ID Idx ) GLOBAL void Conn_SetPenalty( CONN_ID Idx, time_t Seconds ) { - /* Penalty-Delay fuer eine Verbindung (in Sekunden) setzen; - * waehrend dieser Zeit wird der entsprechende Socket vom Server - * bei Lese-Operationen komplett ignoriert. Der Delay kann mit - * dieser Funktion nur erhoeht, nicht aber verringert werden. */ - + /* 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 ) My_Connections[Idx].delaytime = t; + if (t > My_Connections[Idx].delaytime) + My_Connections[Idx].delaytime = t; + +#ifdef DEBUG + Log(LOG_DEBUG, "Add penalty time on connection %d: %ld second(s).", + Idx, (long)Seconds); +#endif } /* Conn_SetPenalty */ @@ -88,8 +98,6 @@ Conn_ResetPenalty( CONN_ID Idx ) GLOBAL void Conn_ClearFlags( void ) { - /* Alle Connection auf "nicht-markiert" setzen */ - CONN_ID i; for( i = 0; i < Pool_Size; i++ ) My_Connections[i].flag = 0; @@ -99,8 +107,6 @@ Conn_ClearFlags( void ) GLOBAL int Conn_Flag( CONN_ID Idx ) { - /* Ist eine Connection markiert (true) oder nicht? */ - assert( Idx > NONE ); return My_Connections[Idx].flag; } /* Conn_Flag */ @@ -150,7 +156,7 @@ Conn_Next( CONN_ID Idx ) } /* Conn_Next */ -GLOBAL int +GLOBAL UINT16 Conn_Options( CONN_ID Idx ) { assert( Idx > NONE ); @@ -158,6 +164,17 @@ Conn_Options( CONN_ID Idx ) } /* Conn_Options */ +/** + * Set connection option. + */ +GLOBAL void +Conn_SetOption(CONN_ID Idx, int Option) +{ + assert(Idx > NONE); + Conn_OPTION_ADD(&My_Connections[Idx], Option); +} /* Conn_SetOption */ + + /** * Get the start time of the connection. * The result is the start time in seconds since 1970-01-01, as reported @@ -171,19 +188,19 @@ Conn_StartTime( CONN_ID Idx ) assert(Idx > NONE); /* Search client structure for this link ... */ - c = Client_GetFromConn(Idx); + c = Conn_GetClient(Idx); if(c != NULL) return Client_StartTime(c); return 0; } /* Conn_StartTime */ - -GLOBAL int +/** + * return number of bytes queued for writing + */ +GLOBAL size_t Conn_SendQ( CONN_ID Idx ) { - /* Laenge der Daten im Schreibbuffer liefern */ - assert( Idx > NONE ); #ifdef ZLIB if( My_Connections[Idx].options & CONN_ZIP ) @@ -194,31 +211,36 @@ Conn_SendQ( CONN_ID Idx ) } /* Conn_SendQ */ +/** + * return number of messages sent on this connection so far + */ GLOBAL long Conn_SendMsg( CONN_ID Idx ) { - /* Anzahl gesendeter Nachrichten liefern */ assert( Idx > NONE ); return My_Connections[Idx].msg_out; } /* Conn_SendMsg */ +/** + * return number of (uncompressed) bytes sent + * on this connection so far + */ GLOBAL long Conn_SendBytes( CONN_ID Idx ) { - /* Anzahl gesendeter Bytes (unkomprimiert) liefern */ - assert( Idx > NONE ); return My_Connections[Idx].bytes_out; } /* Conn_SendBytes */ -GLOBAL int +/** + * return number of bytes pending in read buffer + */ +GLOBAL size_t Conn_RecvQ( CONN_ID Idx ) { - /* Laenge der Daten im Lesebuffer liefern */ - assert( Idx > NONE ); #ifdef ZLIB if( My_Connections[Idx].options & CONN_ZIP ) @@ -229,25 +251,38 @@ Conn_RecvQ( CONN_ID Idx ) } /* Conn_RecvQ */ +/** + * return number of messages received on this connection so far + */ GLOBAL long Conn_RecvMsg( CONN_ID Idx ) { - /* Anzahl empfangener Nachrichten liefern */ - assert( Idx > NONE ); return My_Connections[Idx].msg_in; } /* Conn_RecvMsg */ +/** + * return number of (uncompressed) bytes received on this + * connection so far + */ GLOBAL long Conn_RecvBytes( CONN_ID Idx ) { - /* Anzahl empfangener Bytes (unkomprimiert) liefern */ - assert( Idx > NONE ); return My_Connections[Idx].bytes_in; } /* Conn_RecvBytes */ +/** + * Return the remote IP address of this connection as string. + */ +GLOBAL const char * +Conn_IPA(CONN_ID Idx) +{ + assert (Idx > NONE); + return ng_ipaddr_tostr(&My_Connections[Idx].addr); +} + GLOBAL void Conn_ResetWCounter( void )