1
0
mirror of https://github.com/osmarks/ngircd.git synced 2025-11-07 17:23:00 +00:00

Compare commits

..

5 Commits

Author SHA1 Message Date
Alexander Barton
b74699b074 - Dokumentation aktualisiert. 2002-11-29 11:42:24 +00:00
Alexander Barton
35054b1f64 - beim Schliessen eines Socket wird versucht, alle Daten zu schreiben [HEAD]. 2002-11-29 11:35:08 +00:00
Alexander Barton
f68369d821 - Prefix-Fehler werden besser protokolliert [aus HEAD]. 2002-11-29 10:59:51 +00:00
Alexander Barton
d53d18833d - Server versendet keine doppelten SQUIT's mehr [aus HEAD]. 2002-11-29 10:58:49 +00:00
Alexander Barton
a02c7a5f47 - Version auf 0.5.x-CVS geaendert. 2002-11-29 10:53:44 +00:00
6 changed files with 31 additions and 19 deletions

View File

@@ -10,6 +10,13 @@
-- ChangeLog / Aenderungen -- -- 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 ngIRCd 0.5.4, 24.11.2002
- Fehler-Handling von connect() gefixed: der Server kann sich nun auch - 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 $

View File

@@ -9,7 +9,7 @@
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste # Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. # 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 -- # -- Initialisierung --
@@ -18,7 +18,7 @@ AC_INIT
AC_PREREQ(2.50) AC_PREREQ(2.50)
AC_CANONICAL_TARGET AC_CANONICAL_TARGET
AC_CONFIG_SRCDIR(src/config.h.in) 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) AM_CONFIG_HEADER(src/config.h)
# -- Templates fuer config.h -- # -- Templates fuer config.h --

View File

@@ -1,5 +1,5 @@
%define name ngircd %define name ngircd
%define version 0.5.4 %define version 0.5.x-CVS
%define release 1 %define release 1
%define prefix %{_prefix} %define prefix %{_prefix}

View File

@@ -9,7 +9,7 @@
* Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
* der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. * 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") * 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; 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 ) 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 )); 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 LOCAL BOOLEAN
Try_Write( CONN_ID Idx ) Try_Write( CONN_ID Idx )
{ {
/* Versuchen, Daten aus dem Schreib-Puffer in den /* Versuchen, Daten aus dem Schreib-Puffer in den Socket zu
* Socket zu schreiben. */ * 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; fd_set write_socket;
struct timeval tv; struct timeval tv;
assert( Idx >= 0 ); assert( Idx >= 0 );
assert( My_Connections[Idx].sock > NONE ); 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 */ /* Timeout initialisieren: 0 Sekunden, also nicht blockieren */
tv.tv_sec = 0; tv.tv_usec = 0; tv.tv_sec = 0; tv.tv_usec = 0;

View File

@@ -9,7 +9,7 @@
* Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
* der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. * 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 * 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] ); 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] ); target = Client_Search( Req->argv[0] );
if( ! target ) if( ! target )
{ {

View File

@@ -9,7 +9,7 @@
* Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
* der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. * 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 * parse.c: Parsen der Client-Anfragen
*/ */
@@ -101,8 +101,6 @@ Parse_Request( CONN_ID Idx, CHAR *Request )
} }
else start = Request; else start = Request;
if( ! Validate_Prefix( Idx, &req, &closed )) return ! closed;
/* Befehl */ /* Befehl */
ptr = strchr( start, ' ' ); ptr = strchr( start, ' ' );
if( ptr ) if( ptr )
@@ -116,8 +114,6 @@ Parse_Request( CONN_ID Idx, CHAR *Request )
} }
req.command = start; req.command = start;
if( ! Validate_Command( Idx, &req, &closed )) return ! closed;
/* Argumente, Parameter */ /* Argumente, Parameter */
if( ptr ) 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; if( ! Validate_Args( Idx, &req, &closed )) return ! closed;
return Handle_Request( Idx, &req ); return Handle_Request( Idx, &req );
@@ -209,7 +208,7 @@ Validate_Prefix( CONN_ID Idx, REQUEST *Req, BOOLEAN *Closed )
if( ! c ) if( ! c )
{ {
/* im Prefix angegebener Client ist nicht bekannt */ /* 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; if( ! Conn_WriteStr( Idx, "ERROR :Invalid prefix \"%s\", client not known!?", Req->prefix )) *Closed = TRUE;
return FALSE; return FALSE;
} }
@@ -221,7 +220,7 @@ Validate_Prefix( CONN_ID Idx, REQUEST *Req, BOOLEAN *Closed )
{ {
/* das angegebene Prefix ist aus dieser Richtung, also /* das angegebene Prefix ist aus dieser Richtung, also
* aus der gegebenen Connection, ungueltig! */ * 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 ); Conn_Close( Idx, NULL, "Spoofed prefix", TRUE );
*Closed = TRUE; *Closed = TRUE;
return FALSE; return FALSE;