1
0
mirror of https://github.com/osmarks/ngircd.git synced 2025-10-23 02:07:37 +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 --
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 $

View File

@@ -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 --

View File

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

View File

@@ -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;

View File

@@ -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 )
{

View File

@@ -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;