mirror of
				https://github.com/osmarks/ngircd.git
				synced 2025-11-03 23:43:00 +00:00 
			
		
		
		
	Compare commits
	
		
			5 Commits
		
	
	
		
			rel-0-5-4
			...
			branch-0-5
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					b74699b074 | ||
| 
						 | 
					35054b1f64 | ||
| 
						 | 
					f68369d821 | ||
| 
						 | 
					d53d18833d | ||
| 
						 | 
					a02c7a5f47 | 
@@ -10,6 +10,13 @@
 | 
			
		||||
                        -- ChangeLog / Aenderungen --
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ngIRCd 0.5.x-CVS
 | 
			
		||||
 | 
			
		||||
  - Prefix-Fehler werden besser protokolliert (mit verursachendem Befehl).
 | 
			
		||||
  - SQUIT wird nicht mehr doppelt an andere Server weitergeleitet.
 | 
			
		||||
  - Der Server versucht nun vor dem Schliessen einer Verbindung Daten, die
 | 
			
		||||
    noch im Schreibpuffer stehen, zu senden.
 | 
			
		||||
 | 
			
		||||
ngIRCd 0.5.4, 24.11.2002
 | 
			
		||||
 | 
			
		||||
  - Fehler-Handling von connect() gefixed: der Server kann sich nun auch   
 | 
			
		||||
@@ -313,4 +320,4 @@ ngIRCd 0.0.1, 31.12.2001
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- 
 | 
			
		||||
$Id: ChangeLog,v 1.87.2.17 2002/11/24 15:33:14 alex Exp $
 | 
			
		||||
$Id: ChangeLog,v 1.87.2.18 2002/11/29 11:42:24 alex Exp $
 | 
			
		||||
 
 | 
			
		||||
@@ -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.10 2002/11/24 15:33:26 alex Exp $
 | 
			
		||||
# $Id: configure.in,v 1.58.2.11 2002/11/29 10:53:44 alex Exp $
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# -- Initialisierung --
 | 
			
		||||
@@ -18,7 +18,7 @@ AC_INIT
 | 
			
		||||
AC_PREREQ(2.50)
 | 
			
		||||
AC_CANONICAL_TARGET
 | 
			
		||||
AC_CONFIG_SRCDIR(src/config.h.in)
 | 
			
		||||
AM_INIT_AUTOMAKE(ngircd,0.5.4)
 | 
			
		||||
AM_INIT_AUTOMAKE(ngircd,0.5.x-CVS)
 | 
			
		||||
AM_CONFIG_HEADER(src/config.h)
 | 
			
		||||
 | 
			
		||||
# -- Templates fuer config.h --
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
%define name    ngircd
 | 
			
		||||
%define version 0.5.4
 | 
			
		||||
%define version 0.5.x-CVS
 | 
			
		||||
%define release 1
 | 
			
		||||
%define prefix  %{_prefix}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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.8 2002/11/24 15:32:14 alex Exp $
 | 
			
		||||
 * $Id: conn.c,v 1.72.2.9 2002/11/29 11:35:08 alex Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * connect.h: Verwaltung aller Netz-Verbindungen ("connections")
 | 
			
		||||
 */
 | 
			
		||||
@@ -469,6 +469,10 @@ Conn_Close( CONN_ID Idx, CHAR *LogMsg, CHAR *FwdMsg, BOOLEAN InformClient )
 | 
			
		||||
		if( My_Connections[Idx].sock == NONE ) return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* zunaechst versuchen, noch im Schreibpuffer vorhandene
 | 
			
		||||
	 * Daten auf den Socket zu schreiben ... */
 | 
			
		||||
	Try_Write( Idx );
 | 
			
		||||
 | 
			
		||||
	if( close( My_Connections[Idx].sock ) != 0 )
 | 
			
		||||
	{
 | 
			
		||||
		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 ));
 | 
			
		||||
@@ -561,15 +565,20 @@ Conn_SetPenalty( CONN_ID Idx, time_t Seconds )
 | 
			
		||||
LOCAL BOOLEAN
 | 
			
		||||
Try_Write( CONN_ID Idx )
 | 
			
		||||
{
 | 
			
		||||
	/* Versuchen, Daten aus dem Schreib-Puffer in den
 | 
			
		||||
	 * Socket zu schreiben. */
 | 
			
		||||
	/* Versuchen, Daten aus dem Schreib-Puffer in den Socket zu 
 | 
			
		||||
	 * schreiben. TRUE wird geliefert, wenn entweder keine Daten
 | 
			
		||||
	 * zum Versenden vorhanden sind oder erfolgreich bearbeitet
 | 
			
		||||
	 * werden konnten. Im Fehlerfall wird FALSE geliefert und
 | 
			
		||||
	 * die Verbindung geschlossen. */
 | 
			
		||||
 | 
			
		||||
	fd_set write_socket;
 | 
			
		||||
	struct timeval tv;
 | 
			
		||||
 | 
			
		||||
	assert( Idx >= 0 );
 | 
			
		||||
	assert( My_Connections[Idx].sock > NONE );
 | 
			
		||||
	assert( My_Connections[Idx].wdatalen > 0 );
 | 
			
		||||
 | 
			
		||||
	/* sind ueberhaupt Daten vorhanden? */
 | 
			
		||||
	if( ! My_Connections[Idx].wdatalen > 0 ) return TRUE;
 | 
			
		||||
 | 
			
		||||
	/* Timeout initialisieren: 0 Sekunden, also nicht blockieren */
 | 
			
		||||
	tv.tv_sec = 0; tv.tv_usec = 0;
 | 
			
		||||
 
 | 
			
		||||
@@ -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-server.c,v 1.17.2.2 2002/10/04 13:12:46 alex Exp $
 | 
			
		||||
 * $Id: irc-server.c,v 1.17.2.3 2002/11/29 10:58:49 alex Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * irc-server.c: IRC-Befehle fuer Server-Links
 | 
			
		||||
 */
 | 
			
		||||
@@ -339,9 +339,6 @@ IRC_SQUIT( CLIENT *Client, REQUEST *Req )
 | 
			
		||||
 | 
			
		||||
	Log( LOG_DEBUG, "Got SQUIT from %s for \"%s\": \"%s\" ...", Client_ID( Client ), Req->argv[0], Req->argv[1] );
 | 
			
		||||
 | 
			
		||||
	/* SQUIT an alle Server weiterleiten */
 | 
			
		||||
	IRC_WriteStrServers( Client, "SQUIT %s :%s", Req->argv[0], Req->argv[1] );
 | 
			
		||||
 | 
			
		||||
	target = Client_Search( Req->argv[0] );
 | 
			
		||||
	if( ! target )
 | 
			
		||||
	{
 | 
			
		||||
 
 | 
			
		||||
@@ -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: parse.c,v 1.41.2.3 2002/11/20 11:11:19 alex Exp $
 | 
			
		||||
 * $Id: parse.c,v 1.41.2.4 2002/11/29 10:59:51 alex Exp $
 | 
			
		||||
 *
 | 
			
		||||
 * parse.c: Parsen der Client-Anfragen
 | 
			
		||||
 */
 | 
			
		||||
@@ -101,8 +101,6 @@ Parse_Request( CONN_ID Idx, CHAR *Request )
 | 
			
		||||
	}
 | 
			
		||||
	else start = Request;
 | 
			
		||||
 | 
			
		||||
	if( ! Validate_Prefix( Idx, &req, &closed )) return ! closed;
 | 
			
		||||
 | 
			
		||||
	/* Befehl */
 | 
			
		||||
	ptr = strchr( start, ' ' );
 | 
			
		||||
	if( ptr )
 | 
			
		||||
@@ -116,8 +114,6 @@ Parse_Request( CONN_ID Idx, CHAR *Request )
 | 
			
		||||
	}
 | 
			
		||||
	req.command = start;
 | 
			
		||||
 | 
			
		||||
	if( ! Validate_Command( Idx, &req, &closed )) return ! closed;
 | 
			
		||||
 | 
			
		||||
	/* Argumente, Parameter */
 | 
			
		||||
	if( ptr )
 | 
			
		||||
	{
 | 
			
		||||
@@ -156,6 +152,9 @@ Parse_Request( CONN_ID Idx, CHAR *Request )
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Daten validieren */
 | 
			
		||||
	if( ! Validate_Prefix( Idx, &req, &closed )) return ! closed;
 | 
			
		||||
	if( ! Validate_Command( Idx, &req, &closed )) return ! closed;
 | 
			
		||||
	if( ! Validate_Args( Idx, &req, &closed )) return ! closed;
 | 
			
		||||
 | 
			
		||||
	return Handle_Request( Idx, &req );
 | 
			
		||||
@@ -209,7 +208,7 @@ Validate_Prefix( CONN_ID Idx, REQUEST *Req, BOOLEAN *Closed )
 | 
			
		||||
	if( ! c )
 | 
			
		||||
	{
 | 
			
		||||
		/* im Prefix angegebener Client ist nicht bekannt */
 | 
			
		||||
		Log( LOG_ERR, "Invalid prefix \"%s\", client not known (connection %d)!?", Req->prefix, Idx );
 | 
			
		||||
		Log( LOG_ERR, "Invalid prefix \"%s\", client not known (connection %d, command %s)!?", Req->prefix, Idx, Req->command );
 | 
			
		||||
		if( ! Conn_WriteStr( Idx, "ERROR :Invalid prefix \"%s\", client not known!?", Req->prefix )) *Closed = TRUE;
 | 
			
		||||
		return FALSE;
 | 
			
		||||
	}
 | 
			
		||||
@@ -221,7 +220,7 @@ Validate_Prefix( CONN_ID Idx, REQUEST *Req, BOOLEAN *Closed )
 | 
			
		||||
	{
 | 
			
		||||
		/* das angegebene Prefix ist aus dieser Richtung, also
 | 
			
		||||
		 * aus der gegebenen Connection, ungueltig! */
 | 
			
		||||
		Log( LOG_ERR, "Spoofed prefix \"%s\" from \"%s\" (connection %d)!", Req->prefix, Client_Mask( Client_GetFromConn( Idx )), Idx );
 | 
			
		||||
		Log( LOG_ERR, "Spoofed prefix \"%s\" from \"%s\" (connection %d, command %s)!", Req->prefix, Client_Mask( Client_GetFromConn( Idx )), Idx, Req->command );
 | 
			
		||||
		Conn_Close( Idx, NULL, "Spoofed prefix", TRUE );
 | 
			
		||||
		*Closed = TRUE;
 | 
			
		||||
		return FALSE;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user