Index: ChangeLog =================================================================== RCS file: /usr/local/CVS/ngircd/ngircd/ChangeLog,v retrieving revision 1.87.2.10 retrieving revision 1.87.2.11 diff -u -r1.87.2.10 -r1.87.2.11 --- ChangeLog 2002/10/04 12:43:53 1.87.2.10 +++ ChangeLog 2002/11/04 20:03:38 1.87.2.11 @@ -10,6 +10,20 @@ -- ChangeLog / Aenderungen -- +ngIRCd 0.5.3-pre1, 04.11.2002 + + - NOTICE liefert nun wirklich nie mehr einen Fehler, auch dann nicht, + wenn der sendende Client noch gar nicht registriert ist. + - ein "schneller Server-Reconnect" wird nur noch dann versucht, wenn die + Verbindung zuvor ordentlich (="lange genug") in Ordnung war; somit also + nicht meht, wenn der Peer-Server gleich beim Connect ein ERROR liefert. + Das vermeidet "Connect-Orgien". + - einige Datentypen aufgeraumt: z.B. sind viele INT32s nun LONGs. Das ist + auf Platformen mit 8-Byte-Integern kompatibler. + - RPL_YOURHOST_MSG ist nun ircII- und RFC-kompatibel ;-) + - Segfault unter hoher Netzaktivitaet behoben: in Conn_Close() wird die + Connection-Struktur nun frueher als "ungueltig" markiert. + ngIRCd 0.5.2, 04.10.2002 - Buffer Overflow in Read_Resolver_Result() behoben. @@ -284,4 +298,4 @@ -- -$Id: ChangeLog,v 1.87.2.10 2002/10/04 12:43:53 alex Exp $ +$Id: ChangeLog,v 1.87.2.11 2002/11/04 20:03:38 alex Exp $ Index: configure.in =================================================================== RCS file: /usr/local/CVS/ngircd/ngircd/configure.in,v retrieving revision 1.58.2.6 retrieving revision 1.58.2.7 diff -u -r1.58.2.6 -r1.58.2.7 --- configure.in 2002/10/04 12:47:14 1.58.2.6 +++ configure.in 2002/11/04 19:17:52 1.58.2.7 @@ -9,7 +9,7 @@ # Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste # der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. # -# $Id: configure.in,v 1.58.2.6 2002/10/04 12:47:14 alex Exp $ +# $Id: configure.in,v 1.58.2.7 2002/11/04 19:17:52 alex Exp $ # # -- Initialisierung -- @@ -18,7 +18,7 @@ AC_PREREQ(2.50) AC_CANONICAL_TARGET AC_CONFIG_SRCDIR(src/config.h.in) -AM_INIT_AUTOMAKE(ngircd,0.5.2) +AM_INIT_AUTOMAKE(ngircd,0.5.3-pre1) AM_CONFIG_HEADER(src/config.h) # -- Templates fuer config.h -- Index: contrib/ngircd.spec =================================================================== RCS file: /usr/local/CVS/ngircd/ngircd/contrib/ngircd.spec,v retrieving revision 1.1.2.3 retrieving revision 1.1.2.4 diff -u -r1.1.2.3 -r1.1.2.4 --- contrib/ngircd.spec 2002/10/04 12:47:14 1.1.2.3 +++ contrib/ngircd.spec 2002/11/04 19:34:28 1.1.2.4 @@ -1,5 +1,5 @@ %define name ngircd -%define version 0.5.2 +%define version 0.5.3-pre1 %define release 1 %define prefix %{_prefix} Index: src/ngircd/channel.c =================================================================== RCS file: /usr/local/CVS/ngircd/ngircd/src/ngircd/channel.c,v retrieving revision 1.32 retrieving revision 1.32.2.1 diff -u -r1.32 -r1.32.2.1 --- src/ngircd/channel.c 2002/09/03 23:57:57 1.32 +++ src/ngircd/channel.c 2002/11/04 19:18:39 1.32.2.1 @@ -9,7 +9,7 @@ * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. * - * $Id: channel.c,v 1.32 2002/09/03 23:57:57 alex Exp $ + * $Id: channel.c,v 1.32.2.1 2002/11/04 19:18:39 alex Exp $ * * channel.c: Management der Channels */ @@ -249,11 +249,11 @@ } /* Channel_Quit */ -GLOBAL INT +GLOBAL LONG Channel_Count( VOID ) { CHANNEL *c; - INT count; + LONG count; count = 0; c = My_Channels; @@ -266,11 +266,11 @@ } /* Channel_Count */ -GLOBAL INT +GLOBAL LONG Channel_MemberCount( CHANNEL *Chan ) { CL2CHAN *cl2chan; - INT count; + LONG count; assert( Chan != NULL ); Index: src/ngircd/channel.h =================================================================== RCS file: /usr/local/CVS/ngircd/ngircd/src/ngircd/channel.h,v retrieving revision 1.21 retrieving revision 1.21.2.1 diff -u -r1.21 -r1.21.2.1 --- src/ngircd/channel.h 2002/09/03 23:57:57 1.21 +++ src/ngircd/channel.h 2002/11/04 19:18:39 1.21.2.1 @@ -9,7 +9,7 @@ * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. * - * $Id: channel.h,v 1.21 2002/09/03 23:57:57 alex Exp $ + * $Id: channel.h,v 1.21.2.1 2002/11/04 19:18:39 alex Exp $ * * channel.h: Management der Channels (Header) */ @@ -59,8 +59,8 @@ GLOBAL VOID Channel_Kick PARAMS(( CLIENT *Client, CLIENT *Origin, CHAR *Name, CHAR *Reason )); -GLOBAL INT Channel_Count PARAMS((VOID )); -GLOBAL INT Channel_MemberCount PARAMS((CHANNEL *Chan )); +GLOBAL LONG Channel_Count PARAMS((VOID )); +GLOBAL LONG Channel_MemberCount PARAMS((CHANNEL *Chan )); GLOBAL CHAR *Channel_Name PARAMS((CHANNEL *Chan )); GLOBAL CHAR *Channel_Modes PARAMS((CHANNEL *Chan )); Index: src/ngircd/client.c =================================================================== RCS file: /usr/local/CVS/ngircd/ngircd/src/ngircd/client.c,v retrieving revision 1.60.2.1 retrieving revision 1.60.2.2 diff -u -r1.60.2.1 -r1.60.2.2 --- src/ngircd/client.c 2002/10/04 12:40:58 1.60.2.1 +++ src/ngircd/client.c 2002/11/04 19:18:39 1.60.2.2 @@ -9,7 +9,7 @@ * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. * - * $Id: client.c,v 1.60.2.1 2002/10/04 12:40:58 alex Exp $ + * $Id: client.c,v 1.60.2.2 2002/11/04 19:18:39 alex Exp $ * * client.c: Management aller Clients * @@ -60,8 +60,8 @@ LOCAL CHAR GetID_Buffer[GETID_LEN]; -LOCAL INT Count PARAMS(( CLIENT_TYPE Type )); -LOCAL INT MyCount PARAMS(( CLIENT_TYPE Type )); +LOCAL LONG Count PARAMS(( CLIENT_TYPE Type )); +LOCAL LONG MyCount PARAMS(( CLIENT_TYPE Type )); LOCAL CLIENT *New_Client_Struct PARAMS(( VOID )); LOCAL VOID Generate_MyToken PARAMS(( CLIENT *Client )); @@ -840,46 +840,46 @@ } /* Client_Next */ -GLOBAL INT +GLOBAL LONG Client_UserCount( VOID ) { return Count( CLIENT_USER ); } /* Client_UserCount */ -GLOBAL INT +GLOBAL LONG Client_ServiceCount( VOID ) { return Count( CLIENT_SERVICE );; } /* Client_ServiceCount */ -GLOBAL INT +GLOBAL LONG Client_ServerCount( VOID ) { return Count( CLIENT_SERVER ); } /* Client_ServerCount */ -GLOBAL INT +GLOBAL LONG Client_MyUserCount( VOID ) { return MyCount( CLIENT_USER ); } /* Client_MyUserCount */ -GLOBAL INT +GLOBAL LONG Client_MyServiceCount( VOID ) { return MyCount( CLIENT_SERVICE ); } /* Client_MyServiceCount */ -GLOBAL INT +GLOBAL LONG Client_MyServerCount( VOID ) { CLIENT *c; - INT cnt; + LONG cnt; cnt = 0; c = My_Clients; @@ -892,11 +892,11 @@ } /* Client_MyServerCount */ -GLOBAL INT +GLOBAL LONG Client_OperCount( VOID ) { CLIENT *c; - INT cnt; + LONG cnt; cnt = 0; c = My_Clients; @@ -909,11 +909,11 @@ } /* Client_OperCount */ -GLOBAL INT +GLOBAL LONG Client_UnknownCount( VOID ) { CLIENT *c; - INT cnt; + LONG cnt; cnt = 0; c = My_Clients; @@ -953,11 +953,11 @@ } /* Client_IsValidNick */ -LOCAL INT +LOCAL LONG Count( CLIENT_TYPE Type ) { CLIENT *c; - INT cnt; + LONG cnt; cnt = 0; c = My_Clients; @@ -970,11 +970,11 @@ } /* Count */ -LOCAL INT +LOCAL LONG MyCount( CLIENT_TYPE Type ) { CLIENT *c; - INT cnt; + LONG cnt; cnt = 0; c = My_Clients; Index: src/ngircd/client.h =================================================================== RCS file: /usr/local/CVS/ngircd/ngircd/src/ngircd/client.h,v retrieving revision 1.29 retrieving revision 1.29.2.1 diff -u -r1.29 -r1.29.2.1 --- src/ngircd/client.h 2002/09/03 18:54:31 1.29 +++ src/ngircd/client.h 2002/11/04 19:18:39 1.29.2.1 @@ -9,7 +9,7 @@ * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. * - * $Id: client.h,v 1.29 2002/09/03 18:54:31 alex Exp $ + * $Id: client.h,v 1.29.2.1 2002/11/04 19:18:39 alex Exp $ * * client.h: Konfiguration des ngircd (Header) */ @@ -124,14 +124,14 @@ GLOBAL BOOLEAN Client_CheckNick PARAMS((CLIENT *Client, CHAR *Nick )); GLOBAL BOOLEAN Client_CheckID PARAMS((CLIENT *Client, CHAR *ID )); -GLOBAL INT Client_UserCount PARAMS((VOID )); -GLOBAL INT Client_ServiceCount PARAMS((VOID )); -GLOBAL INT Client_ServerCount PARAMS((VOID )); -GLOBAL INT Client_OperCount PARAMS((VOID )); -GLOBAL INT Client_UnknownCount PARAMS((VOID )); -GLOBAL INT Client_MyUserCount PARAMS((VOID )); -GLOBAL INT Client_MyServiceCount PARAMS((VOID )); -GLOBAL INT Client_MyServerCount PARAMS((VOID )); +GLOBAL LONG Client_UserCount PARAMS((VOID )); +GLOBAL LONG Client_ServiceCount PARAMS((VOID )); +GLOBAL LONG Client_ServerCount PARAMS((VOID )); +GLOBAL LONG Client_OperCount PARAMS((VOID )); +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 BOOLEAN Client_IsValidNick PARAMS((CHAR *Nick )); Index: src/ngircd/conf.c =================================================================== RCS file: /usr/local/CVS/ngircd/ngircd/src/ngircd/conf.c,v retrieving revision 1.29.2.3 retrieving revision 1.29.2.4 diff -u -r1.29.2.3 -r1.29.2.4 --- src/ngircd/conf.c 2002/10/04 13:12:46 1.29.2.3 +++ src/ngircd/conf.c 2002/11/04 19:18:39 1.29.2.4 @@ -9,7 +9,7 @@ * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. * - * $Id: conf.c,v 1.29.2.3 2002/10/04 13:12:46 alex Exp $ + * $Id: conf.c,v 1.29.2.4 2002/11/04 19:18:39 alex Exp $ * * conf.h: Konfiguration des ngircd */ @@ -98,8 +98,8 @@ printf( "%u", Conf_ListenPorts[i] ); } puts( "" ); - printf( " ServerUID = %ld\n", (INT32)Conf_UID ); - printf( " ServerGID = %ld\n", (INT32)Conf_GID ); + printf( " ServerUID = %ld\n", (LONG)Conf_UID ); + printf( " ServerGID = %ld\n", (LONG)Conf_GID ); printf( " PingTimeout = %d\n", Conf_PingTimeout ); printf( " PongTimeout = %d\n", Conf_PongTimeout ); printf( " ConnectRetry = %d\n", Conf_ConnectRetry ); @@ -295,7 +295,7 @@ Handle_GLOBAL( INT Line, CHAR *Var, CHAR *Arg ) { CHAR *ptr; - INT32 port; + LONG port; assert( Line > 0 ); assert( Var != NULL ); @@ -446,7 +446,7 @@ LOCAL VOID Handle_SERVER( INT Line, CHAR *Var, CHAR *Arg ) { - INT32 port; + LONG port; assert( Line > 0 ); assert( Var != NULL ); @@ -539,7 +539,7 @@ } #ifdef STRICT_RFC - if( ! ConfAdminMail[0] ) + if( ! Conf_ServerAdminMail[0] ) { /* Keine Server-Information konfiguriert */ Config_Error( LOG_ALERT, "No administrator email address configured in \"%s\" ('AdminEMail')!", NGIRCd_ConfFile ); Index: src/ngircd/conn.c =================================================================== RCS file: /usr/local/CVS/ngircd/ngircd/src/ngircd/conn.c,v retrieving revision 1.72.2.3 retrieving revision 1.72.2.4 diff -u -r1.72.2.3 -r1.72.2.4 --- src/ngircd/conn.c 2002/10/04 13:12:46 1.72.2.3 +++ src/ngircd/conn.c 2002/11/04 19:18:39 1.72.2.4 @@ -9,7 +9,7 @@ * 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.72.2.3 2002/10/04 13:12:46 alex Exp $ + * $Id: conn.c,v 1.72.2.4 2002/11/04 19:18:39 alex Exp $ * * connect.h: Verwaltung aller Netz-Verbindungen ("connections") */ @@ -235,7 +235,7 @@ fd_set read_sockets, write_sockets; struct timeval tv; time_t start, t; - INT i; + INT i, idx; start = time( NULL ); while(( ! NGIRCd_Quit ) && ( ! NGIRCd_Restart )) @@ -317,7 +317,7 @@ /* Fehler (z.B. Interrupt) */ if( errno != EINTR ) { - Log( LOG_EMERG, "select(): %s!", strerror( errno )); + Log( LOG_EMERG, "Conn_Handler(): select(): %s!", strerror( errno )); Log( LOG_ALERT, "%s exiting due to fatal errors!", PACKAGE ); exit( 1 ); } @@ -327,7 +327,18 @@ /* Koennen Daten geschrieben werden? */ for( i = 0; i < Conn_MaxFD + 1; i++ ) { - if( FD_ISSET( i, &write_sockets )) Handle_Write( Socket2Index( i )); + if( ! FD_ISSET( i, &write_sockets )) continue; + + /* Es kann geschrieben werden ... */ + idx = Socket2Index( i ); + if( idx == NONE ) continue; + + if( ! Handle_Write( idx )) + { + /* Fehler beim Schreiben! Diesen Socket nun + * auch aus dem Read-Set entfernen: */ + FD_CLR( i, &read_sockets ); + } } /* Daten zum Lesen vorhanden? */ @@ -456,12 +467,17 @@ if( close( My_Connections[Idx].sock ) != 0 ) { - Log( LOG_ERR, "Error closing connection %d with %s:%d - %s!", Idx, inet_ntoa( My_Connections[Idx].addr.sin_addr ), ntohs( My_Connections[Idx].addr.sin_port), strerror( errno )); + Log( LOG_ERR, "Error closing connection %d (socket %d) with %s:%d - %s!", Idx, My_Connections[Idx].sock, inet_ntoa( My_Connections[Idx].addr.sin_addr ), ntohs( My_Connections[Idx].addr.sin_port), strerror( errno )); } else { - Log( LOG_INFO, "Connection %d with %s:%d closed.", Idx, inet_ntoa( My_Connections[Idx].addr.sin_addr ), ntohs( My_Connections[Idx].addr.sin_port )); + Log( LOG_INFO, "Connection %d (socket %d) with %s:%d closed.", Idx, My_Connections[Idx].sock, inet_ntoa( My_Connections[Idx].addr.sin_addr ), ntohs( My_Connections[Idx].addr.sin_port )); } + + /* Socket als "ungueltig" markieren */ + FD_CLR( My_Connections[Idx].sock, &My_Sockets ); + FD_CLR( My_Connections[Idx].sock, &My_Connects ); + My_Connections[Idx].sock = NONE; c = Client_GetFromConn( Idx ); if( c ) Client_Destroy( c, LogMsg, FwdMsg, TRUE ); @@ -475,18 +491,18 @@ free( My_Connections[Idx].res_stat ); } - /* 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 ))) + /* Startzeit des naechsten Connect-Versuchs modifizieren? */ + if(( My_Connections[Idx].our_server >= 0 ) && ( Conf_Server[My_Connections[Idx].our_server].lasttry < time( NULL ) - Conf_ConnectRetry )) { - /* Okay, die Verbindung stand schon "genuegend lange" */ + /* Okay, die Verbindung stand schon "genuegend lange": + * lasttry-Zeitpunkt so setzen, dass der naechste + * Verbindungsversuch in RECONNECT_DELAY Sekunden + * gestartet wird. */ 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; + /* Connection-Struktur loeschen (=freigeben) */ + Init_Conn_Struct( Idx ); } /* Conn_Close */ @@ -557,7 +573,7 @@ /* Fehler! */ if( errno != EINTR ) { - Log( LOG_ALERT, "select() failed: %s!", strerror( errno )); + Log( LOG_ALERT, "Try_Write(): select() failed: %s (con=%d, sock=%d)!", strerror( errno ), Idx, My_Connections[Idx].sock ); Conn_Close( Idx, "Server error!", NULL, FALSE ); return FALSE; } @@ -598,7 +614,7 @@ /* Ein Client Socket: entweder ein User oder Server */ idx = Socket2Index( Sock ); - Read_Request( idx ); + if( idx > NONE ) Read_Request( idx ); } } /* Handle_Read */ @@ -610,7 +626,7 @@ INT len, res, err; - assert( Idx >= 0 ); + assert( Idx > NONE ); assert( My_Connections[Idx].sock > NONE ); if( FD_ISSET( My_Connections[Idx].sock, &My_Connects )) @@ -646,9 +662,7 @@ /* PASS und SERVER verschicken */ Conn_WriteStr( Idx, "PASS %s %s", Conf_Server[My_Connections[Idx].our_server].pwd, NGIRCd_ProtoID ); - Conn_WriteStr( Idx, "SERVER %s :%s", Conf_ServerName, Conf_ServerInfo ); - - return TRUE; + return Conn_WriteStr( Idx, "SERVER %s :%s", Conf_ServerName, Conf_ServerInfo ); } assert( My_Connections[Idx].wdatalen > 0 ); @@ -658,8 +672,8 @@ if( len < 0 ) { /* Oops, ein Fehler! */ - Log( LOG_ERR, "Write error (buffer) on connection %d: %s!", Idx, strerror( errno )); - Conn_Close( Idx, "Write error (buffer)!", NULL, FALSE ); + Log( LOG_ERR, "Write error on connection %d (socket %d): %s!", Idx, My_Connections[Idx].sock, strerror( errno )); + Conn_Close( Idx, "Write error!", NULL, FALSE ); return FALSE; } @@ -693,7 +707,7 @@ return; } - /* Freie Connection-Struktur suschen */ + /* Freie Connection-Struktur suchen */ for( idx = 0; idx < MAX_CONNECTIONS; idx++ ) if( My_Connections[idx].sock == NONE ) break; if( idx >= MAX_CONNECTIONS ) { @@ -752,8 +766,14 @@ for( idx = 0; idx < MAX_CONNECTIONS; idx++ ) if( My_Connections[idx].sock == Sock ) break; - assert( idx < MAX_CONNECTIONS ); - return idx; + if( idx >= MAX_CONNECTIONS ) + { + /* die Connection wurde vermutlich (wegen eines + * Fehlers) bereits wieder abgebaut ... */ + Log( LOG_DEBUG, "Socket2Index: can't get connection for socket %d!", Sock ); + return NONE; + } + else return idx; } /* Socket2Index */ @@ -789,7 +809,7 @@ if( len < 0 ) { /* Fehler beim Lesen */ - Log( LOG_ERR, "Read error on connection %d: %s!", Idx, strerror( errno )); + Log( LOG_ERR, "Read error on connection %d (socket %d): %s!", Idx, My_Connections[Idx].sock, strerror( errno )); Conn_Close( Idx, "Read error!", "Client closed connection", FALSE ); return; } @@ -811,7 +831,10 @@ { /* Daten im Lese-Puffer einer Verbindung verarbeiten. */ - CHAR *ptr, *ptr1, *ptr2; +#ifndef STRICT_RFC + CHAR *ptr1, *ptr2; +#endif + CHAR *ptr; INT len, delta; /* Eine komplette Anfrage muss mit CR+LF enden, vgl. @@ -1072,6 +1095,8 @@ FD_SET( new_sock, &My_Sockets ); FD_SET( new_sock, &My_Connects ); if( new_sock > Conn_MaxFD ) Conn_MaxFD = new_sock; + + Log( LOG_DEBUG, "Registered new connection %d on socket %d.", Idx, My_Connections[Idx].sock ); } /* New_Server */ @@ -1151,7 +1176,7 @@ if( i >= MAX_CONNECTIONS ) { /* Opsa! Keine passende Connection gefunden!? Vermutlich - * wurde sie schon wieder geschlossen. */ + * wurde sie schon wieder geschlossen. */ close( r_fd ); Log( LOG_DEBUG, "Resolver: Got result for unknown connection!?" ); return; Index: src/ngircd/irc.c =================================================================== RCS file: /usr/local/CVS/ngircd/ngircd/src/ngircd/irc.c,v retrieving revision 1.95.2.2 retrieving revision 1.95.2.3 diff -u -r1.95.2.2 -r1.95.2.3 --- src/ngircd/irc.c 2002/10/04 13:12:46 1.95.2.2 +++ src/ngircd/irc.c 2002/11/04 19:18:39 1.95.2.3 @@ -9,7 +9,7 @@ * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. * - * $Id: irc.c,v 1.95.2.2 2002/10/04 13:12:46 alex Exp $ + * $Id: irc.c,v 1.95.2.3 2002/11/04 19:18:39 alex Exp $ * * irc.c: IRC-Befehle */ @@ -109,7 +109,7 @@ assert( Client != NULL ); assert( Req != NULL ); - if(( Client_Type( Client ) != CLIENT_USER ) && ( Client_Type( Client ) != CLIENT_SERVER )) return IRC_WriteStrClient( Client, ERR_NOTREGISTERED_MSG, Client_ID( Client )); + if(( Client_Type( Client ) != CLIENT_USER ) && ( Client_Type( Client ) != CLIENT_SERVER )) return CONNECTED; /* Falsche Anzahl Parameter? */ if( Req->argc != 2 ) return CONNECTED; @@ -834,7 +834,7 @@ GLOBAL BOOLEAN IRC_Send_LUSERS( CLIENT *Client ) { - INT cnt; + LONG cnt; assert( Client != NULL ); Index: src/ngircd/log.c =================================================================== RCS file: /usr/local/CVS/ngircd/ngircd/src/ngircd/log.c,v retrieving revision 1.37.2.2 retrieving revision 1.37.2.3 diff -u -r1.37.2.2 -r1.37.2.3 --- src/ngircd/log.c 2002/10/04 13:12:46 1.37.2.2 +++ src/ngircd/log.c 2002/11/04 19:18:39 1.37.2.3 @@ -9,7 +9,7 @@ * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. * - * $Id: log.c,v 1.37.2.2 2002/10/04 13:12:46 alex Exp $ + * $Id: log.c,v 1.37.2.3 2002/11/04 19:18:39 alex Exp $ * * log.c: Logging-Funktionen */ @@ -96,7 +96,7 @@ * landen z.B. alle Ausgaben von assert()-Aufrufen. */ /* Dateiname zusammen bauen */ - sprintf( Error_File, "%s/%s-%ld.err", ERROR_DIR, PACKAGE, (INT32)getpid( )); + sprintf( Error_File, "%s/%s-%ld.err", ERROR_DIR, PACKAGE, (LONG)getpid( )); /* stderr umlenken */ fflush( stderr ); Index: src/ngircd/messages.h =================================================================== RCS file: /usr/local/CVS/ngircd/ngircd/src/ngircd/messages.h,v retrieving revision 1.46.2.1 retrieving revision 1.46.2.3 diff -u -r1.46.2.1 -r1.46.2.3 --- src/ngircd/messages.h 2002/10/03 16:13:38 1.46.2.1 +++ src/ngircd/messages.h 2002/11/04 19:27:23 1.46.2.3 @@ -9,7 +9,7 @@ * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. * - * $Id: messages.h,v 1.46.2.1 2002/10/03 16:13:38 alex Exp $ + * $Id: messages.h,v 1.46.2.3 2002/11/04 19:27:23 alex Exp $ * * irc.h: IRC-Befehle (Header) */ @@ -20,15 +20,15 @@ #define RPL_WELCOME_MSG "001 %s :Welcome to the Internet Relay Network %s" -#define RPL_YOURHOST_MSG "002 %s :Your host is %s, running ngircd %s-%s/%s/%s" +#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_UMODEIS_MSG "211 %s +%s" -#define RPL_LUSERCLIENT_MSG "251 %s :There are %d users and %d services on %d servers" -#define RPL_LUSEROP_MSG "252 %s %d :operator(s) online" -#define RPL_LUSERUNKNOWN_MSG "253 %s %d :unknown connection(s)" -#define RPL_LUSERCHANNELS_MSG "254 %s %d :channels formed" -#define RPL_LUSERME_MSG "255 %s :I have %d users, %d services and %d servers" +#define RPL_LUSERCLIENT_MSG "251 %s :There are %ld users and %ld services on %ld servers" +#define RPL_LUSEROP_MSG "252 %s %ld :operator(s) online" +#define RPL_LUSERUNKNOWN_MSG "253 %s %ld :unknown connection(s)" +#define RPL_LUSERCHANNELS_MSG "254 %s %ld :channels formed" +#define RPL_LUSERME_MSG "255 %s :I have %ld users, %ld services and %ld servers" #define RPL_ADMINME_MSG "256 %s %s :Administrative info" #define RPL_ADMINLOC1_MSG "257 %s :%s" #define RPL_ADMINLOC2_MSG "258 %s :%s" @@ -46,7 +46,7 @@ #define RPL_WHOISIDLE_MSG "317 %s %s %ld :seconds idle" #define RPL_ENDOFWHOIS_MSG "318 %s %s :End of WHOIS list" #define RPL_WHOISCHANNELS_MSG "319 %s %s :" -#define RPL_LIST_MSG "322 %s %s %d :%s" +#define RPL_LIST_MSG "322 %s %s %ld :%s" #define RPL_LISTEND_MSG "323 %s :End of LIST" #define RPL_CHANNELMODEIS_MSG "324 %s %s +%s" #define RPL_NOTOPIC_MSG "331 %s %s :No topic is set" Index: src/ngircd/ngircd.c =================================================================== RCS file: /usr/local/CVS/ngircd/ngircd/src/ngircd/ngircd.c,v retrieving revision 1.54.2.2 retrieving revision 1.54.2.3 diff -u -r1.54.2.2 -r1.54.2.3 --- src/ngircd/ngircd.c 2002/10/04 13:12:46 1.54.2.2 +++ src/ngircd/ngircd.c 2002/11/04 19:18:39 1.54.2.3 @@ -9,7 +9,7 @@ * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. * - * $Id: ngircd.c,v 1.54.2.2 2002/10/04 13:12:46 alex Exp $ + * $Id: ngircd.c,v 1.54.2.3 2002/11/04 19:18:39 alex Exp $ * * ngircd.c: Hier beginnt alles ;-) */ @@ -58,7 +58,7 @@ main( int argc, const char *argv[] ) { BOOLEAN ok, configtest = FALSE; - INT32 pid, n; + LONG pid, n; INT i; umask( 0077 ); @@ -140,7 +140,7 @@ { /* Kurze Option */ - for( n = 1; n < (INT32)strlen( argv[i] ); n++ ) + for( n = 1; n < (LONG)strlen( argv[i] ); n++ ) { ok = FALSE; #ifdef DEBUG @@ -159,7 +159,7 @@ NGIRCd_ConfFile[FNAME_LEN - 1] = '\0'; /* zum uebernaechsten Parameter */ - i++; n = (INT32)strlen( argv[i] ); + i++; n = (LONG)strlen( argv[i] ); ok = TRUE; } } @@ -227,7 +227,7 @@ if( ! NGIRCd_NoDaemon ) { /* Daemon im Hintergrund erzeugen */ - pid = (INT32)fork( ); + pid = (LONG)fork( ); if( pid > 0 ) { /* "alter" Prozess */ @@ -275,7 +275,7 @@ if( setuid( Conf_UID ) != 0 ) Log( LOG_ERR, "Can't change User-ID to %u: %s", Conf_UID, strerror( errno )); } } - Log( LOG_INFO, "Running as user %ld, group %ld, with PID %ld.", (INT32)getuid( ), (INT32)getgid( ), (INT32)getpid( )); + Log( LOG_INFO, "Running as user %ld, group %ld, with PID %ld.", (LONG)getuid( ), (LONG)getgid( ), (LONG)getpid( )); Log_InitErrorfile( ); Index: src/portab/portab.h =================================================================== RCS file: /usr/local/CVS/ngircd/ngircd/src/portab/portab.h,v retrieving revision 1.7 retrieving revision 1.7.2.1 diff -u -r1.7 -r1.7.2.1 --- src/portab/portab.h 2002/06/26 15:43:38 1.7 +++ src/portab/portab.h 2002/11/04 19:18:39 1.7.2.1 @@ -9,7 +9,7 @@ * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. * - * $Id: portab.h,v 1.7 2002/06/26 15:43:38 alex Exp $ + * $Id: portab.h,v 1.7.2.1 2002/11/04 19:18:39 alex Exp $ * * portab.h: "Portabilitaets-Definitionen" */ @@ -56,6 +56,9 @@ typedef signed int INT; typedef unsigned int UINT; +typedef signed long LONG; +typedef unsigned long ULONG; + typedef signed char INT8; typedef unsigned char UINT8; typedef signed short INT16; @@ -63,6 +66,7 @@ typedef signed long INT32; typedef unsigned long UINT32; +typedef double DOUBLE; typedef float FLOAT; typedef char CHAR; Index: src/testsuite/ngircd-test.conf =================================================================== RCS file: /usr/local/CVS/ngircd/ngircd/src/testsuite/ngircd-test.conf,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -u -r1.2 -r1.2.2.1 --- src/testsuite/ngircd-test.conf 2002/09/09 21:25:50 1.2 +++ src/testsuite/ngircd-test.conf 2002/11/04 19:18:39 1.2.2.1 @@ -1,10 +1,11 @@ -# $Id: ngircd-test.conf,v 1.2 2002/09/09 21:25:50 alex Exp $ +# $Id: ngircd-test.conf,v 1.2.2.1 2002/11/04 19:18:39 alex Exp $ [Global] Name = ngircd.test.server Info = ngIRCd Test-Server Ports = 6789 MotdFile = ngircd-test.motd + AdminEMail = admin@irc.server [Operator] Name = TestOp