commit f84cd22fe1824a4b0b2b7424707bf0f57004dc77 from: Alexander Barton date: Sun Dec 22 23:42:28 2002 UTC - Backports from CVS-HEAD (005-numeric, extended LUSERS reply). commit - 3544d1bc40ae5e98b57f9a588fcda554d22fc8b3 commit + f84cd22fe1824a4b0b2b7424707bf0f57004dc77 blob - a383e89783e02717b65e874b77820fb09d22a230 blob + 3b265fd8b7fe1ab27fbb5c7c9b9240f6f9acb9c7 --- src/ngircd/client.c +++ src/ngircd/client.c @@ -17,7 +17,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: client.c,v 1.65 2002/12/12 12:24:18 alex Exp $"; +static char UNUSED id[] = "$Id: client.c,v 1.65.2.1 2002/12/22 23:42:28 alex Exp $"; #include "imp.h" #include @@ -57,8 +57,12 @@ LOCAL LONG MyCount PARAMS(( CLIENT_TYPE Type )); LOCAL CLIENT *New_Client_Struct PARAMS(( VOID )); LOCAL VOID Generate_MyToken PARAMS(( CLIENT *Client )); +LOCAL VOID Adjust_Counters PARAMS(( CLIENT *Client )); +LONG Max_Users = 0, My_Max_Users = 0; + + GLOBAL VOID Client_Init( VOID ) { @@ -177,6 +181,9 @@ Client_New( CONN_ID Idx, CLIENT *Introducer, CLIENT *T client->next = (POINTER *)My_Clients; My_Clients = client; + /* Adjust counters */ + Adjust_Counters( client ); + return client; } /* Client_New */ @@ -414,6 +421,7 @@ Client_SetType( CLIENT *Client, INT Type ) assert( Client != NULL ); Client->type = Type; if( Type == CLIENT_SERVER ) Generate_MyToken( Client ); + Adjust_Counters( Client ); } /* Client_SetType */ @@ -917,6 +925,20 @@ Client_UnknownCount( VOID ) } return cnt; } /* Client_UnknownCount */ + + +GLOBAL LONG +Client_MaxUserCount( VOID ) +{ + return Max_Users; +} /* Client_MaxUserCount */ + + +GLOBAL LONG +Client_MyMaxUserCount( VOID ) +{ + return My_Max_Users; +} /* Client_MyMaxUserCount */ GLOBAL BOOLEAN @@ -1041,4 +1063,24 @@ Generate_MyToken( CLIENT *Client ) } /* Generate_MyToken */ +LOCAL VOID +Adjust_Counters( CLIENT *Client ) +{ + LONG count; + + assert( Client != NULL ); + + if( Client->type != CLIENT_USER ) return; + + if( Client->conn_id != NONE ) + { + /* Local connection */ + count = Client_MyUserCount( ); + if( count > My_Max_Users ) My_Max_Users = count; + } + count = Client_UserCount( ); + if( count > Max_Users ) Max_Users = count; +} /* Adjust_Counters */ + + /* -eof- */ blob - edee38e4291dc6f1ff39641bcf1b3102b8fc1378 blob + b305a3cc313c8fee6eeabcb50a4164dc35b11a96 --- src/ngircd/client.h +++ src/ngircd/client.h @@ -8,7 +8,7 @@ * (at your option) any later version. * Please read the file COPYING, README and AUTHORS for more information. * - * $Id: client.h,v 1.32 2002/12/12 12:23:43 alex Exp $ + * $Id: client.h,v 1.32.2.1 2002/12/22 23:42:28 alex Exp $ * * Client management (header) */ @@ -130,6 +130,8 @@ GLOBAL LONG Client_UnknownCount PARAMS((VOID )); GLOBAL LONG Client_MyUserCount PARAMS((VOID )); GLOBAL LONG Client_MyServiceCount PARAMS((VOID )); GLOBAL LONG Client_MyServerCount PARAMS((VOID )); +GLOBAL LONG Client_MaxUserCount PARAMS(( VOID )); +GLOBAL LONG Client_MyMaxUserCount PARAMS(( VOID )); GLOBAL BOOLEAN Client_IsValidNick PARAMS((CHAR *Nick )); blob - 48296077238a8d049b8cacb3983372b8eeca3175 blob + d36c2a2f95b58c67648bda9328841ff308969bcb --- src/ngircd/irc-info.c +++ src/ngircd/irc-info.c @@ -14,7 +14,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: irc-info.c,v 1.8 2002/12/18 13:55:41 alex Exp $"; +static char UNUSED id[] = "$Id: irc-info.c,v 1.8.2.1 2002/12/22 23:42:28 alex Exp $"; #include "imp.h" #include @@ -710,29 +710,36 @@ IRC_Send_LUSERS( CLIENT *Client ) assert( Client != NULL ); - /* Users, Services und Serevr im Netz */ + /* Users, services and serevers in the network */ if( ! IRC_WriteStrClient( Client, RPL_LUSERCLIENT_MSG, Client_ID( Client ), Client_UserCount( ), Client_ServiceCount( ), Client_ServerCount( ))) return DISCONNECTED; - /* IRC-Operatoren im Netz */ + /* Number of IRC operators */ cnt = Client_OperCount( ); if( cnt > 0 ) { if( ! IRC_WriteStrClient( Client, RPL_LUSEROP_MSG, Client_ID( Client ), cnt )) return DISCONNECTED; } - /* Unbekannt Verbindungen */ + /* Unknown connections */ cnt = Client_UnknownCount( ); if( cnt > 0 ) { if( ! IRC_WriteStrClient( Client, RPL_LUSERUNKNOWN_MSG, Client_ID( Client ), cnt )) return DISCONNECTED; } - /* Channels im Netz */ + /* Number of created channels */ if( ! IRC_WriteStrClient( Client, RPL_LUSERCHANNELS_MSG, Client_ID( Client ), Channel_Count( ))) return DISCONNECTED; - /* Channels im Netz */ + /* Number of local users, services and servers */ if( ! IRC_WriteStrClient( Client, RPL_LUSERME_MSG, Client_ID( Client ), Client_MyUserCount( ), Client_MyServiceCount( ), Client_MyServerCount( ))) return DISCONNECTED; +#ifndef STRICT_RFC + /* Maximum number of local users */ + if( ! IRC_WriteStrClient( Client, RPL_LOCALUSERS_MSG, Client_ID( Client ), Client_MyUserCount( ), Client_MyMaxUserCount( ))) return DISCONNECTED; + /* Maximum number of users in the network */ + if( ! IRC_WriteStrClient( Client, RPL_NETUSERS_MSG, Client_ID( Client ), Client_UserCount( ), Client_MaxUserCount( ))) return DISCONNECTED; +#endif + return CONNECTED; } /* IRC_Send_LUSERS */ blob - 8218d22b25de823f78db1cf8f85aff836717680f blob + ca849fdbf394694d8bfdd83cc8adf11025c0d061 --- src/ngircd/irc-login.c +++ src/ngircd/irc-login.c @@ -14,7 +14,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: irc-login.c,v 1.27 2002/12/12 12:24:18 alex Exp $"; +static char UNUSED id[] = "$Id: irc-login.c,v 1.27.2.1 2002/12/22 23:42:28 alex Exp $"; #include "imp.h" #include @@ -448,6 +448,9 @@ Hello_User( CLIENT *Client ) if( ! IRC_WriteStrClient( Client, RPL_CREATED_MSG, Client_ID( Client ), NGIRCd_StartStr )) return FALSE; if( ! IRC_WriteStrClient( Client, RPL_MYINFO_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )), VERSION, USERMODES, CHANMODES )) return FALSE; + /* Features */ + if( ! IRC_WriteStrClient( Client, RPL_FEATURE_MSG, Client_ID( Client ), CLIENT_NICK_LEN - 1, CHANNEL_TOPIC_LEN - 1, CLIENT_AWAY_LEN - 1, Conf_MaxJoins )) return DISCONNECTED; + Client_SetType( Client, CLIENT_USER ); if( ! IRC_Send_LUSERS( Client )) return DISCONNECTED; blob - 2d9fbf3878836f37c824e0ad1aecbcc09397b42e blob + 659e3c86a599c1ad49f4bbf039b12709f337c09b --- src/ngircd/messages.h +++ src/ngircd/messages.h @@ -8,7 +8,7 @@ * (at your option) any later version. * Please read the file COPYING, README and AUTHORS for more information. * - * $Id: messages.h,v 1.59 2002/12/18 14:03:14 alex Exp $ + * $Id: messages.h,v 1.59.2.1 2002/12/22 23:42:28 alex Exp $ * * IRC numerics (Header) */ @@ -22,6 +22,7 @@ #define RPL_YOURHOST_MSG "002 %s :Your host is %s, running version ngircd-%s (%s/%s/%s)" #define RPL_CREATED_MSG "003 %s :This server has been started %s" #define RPL_MYINFO_MSG "004 %s %s ngircd-%s %s %s" +#define RPL_FEATURE_MSG "005 %s NICKLEN=%d TOPICLEN=%d AWAYLEN=%d MAXCHANNELS=%d :are supported on this server" #define RPL_STATSLINKINFO_MSG "211 %s %s %d %ld %ld %ld %ld :%ld" #define RPL_STATSCOMMANDS_MSG "212 %s %s %ld %ld %ld" #define RPL_ENDOFSTATS_MSG "219 %s %c :End of STATS report" @@ -35,6 +36,8 @@ #define RPL_ADMINLOC1_MSG "257 %s :%s" #define RPL_ADMINLOC2_MSG "258 %s :%s" #define RPL_ADMINEMAIL_MSG "259 %s :%s" +#define RPL_LOCALUSERS_MSG "265 %s :Current local users: %ld, Max: %ld" +#define RPL_NETUSERS_MSG "266 %s :Current global users: %ld, Max: %ld" #define RPL_AWAY_MSG "301 %s %s :%s" #define RPL_USERHOST_MSG "302 %s :"