mirror of
https://github.com/osmarks/ngircd.git
synced 2024-12-14 19:00:27 +00:00
- Client_Destroy() hat neuen Paramter: QUITs fuer Clients verschicken?
This commit is contained in:
parent
92793d3114
commit
50ec7a56a4
@ -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: client.c,v 1.46 2002/03/10 22:03:20 alex Exp $
|
* $Id: client.c,v 1.47 2002/03/11 22:04:10 alex Exp $
|
||||||
*
|
*
|
||||||
* client.c: Management aller Clients
|
* client.c: Management aller Clients
|
||||||
*
|
*
|
||||||
@ -21,6 +21,9 @@
|
|||||||
* Server gewesen, so existiert eine entsprechende CONNECTION-Struktur.
|
* Server gewesen, so existiert eine entsprechende CONNECTION-Struktur.
|
||||||
*
|
*
|
||||||
* $Log: client.c,v $
|
* $Log: client.c,v $
|
||||||
|
* Revision 1.47 2002/03/11 22:04:10 alex
|
||||||
|
* - Client_Destroy() hat neuen Paramter: QUITs fuer Clients verschicken?
|
||||||
|
*
|
||||||
* Revision 1.46 2002/03/10 22:03:20 alex
|
* Revision 1.46 2002/03/10 22:03:20 alex
|
||||||
* - Netz-Splits werden nun als soche ausgegeben.
|
* - Netz-Splits werden nun als soche ausgegeben.
|
||||||
*
|
*
|
||||||
@ -244,7 +247,7 @@ GLOBAL VOID Client_Exit( VOID )
|
|||||||
CLIENT *c, *next;
|
CLIENT *c, *next;
|
||||||
INT cnt;
|
INT cnt;
|
||||||
|
|
||||||
Client_Destroy( This_Server, "Server going down.", NULL );
|
Client_Destroy( This_Server, "Server going down.", NULL, FALSE );
|
||||||
|
|
||||||
cnt = 0;
|
cnt = 0;
|
||||||
c = My_Clients;
|
c = My_Clients;
|
||||||
@ -322,7 +325,7 @@ GLOBAL CLIENT *Client_New( CONN_ID Idx, CLIENT *Introducer, CLIENT *TopServer, I
|
|||||||
} /* Client_New */
|
} /* Client_New */
|
||||||
|
|
||||||
|
|
||||||
GLOBAL VOID Client_Destroy( CLIENT *Client, CHAR *LogMsg, CHAR *FwdMsg )
|
GLOBAL VOID Client_Destroy( CLIENT *Client, CHAR *LogMsg, CHAR *FwdMsg, BOOLEAN SendQuit )
|
||||||
{
|
{
|
||||||
/* Client entfernen. */
|
/* Client entfernen. */
|
||||||
|
|
||||||
@ -349,7 +352,7 @@ GLOBAL VOID Client_Destroy( CLIENT *Client, CHAR *LogMsg, CHAR *FwdMsg )
|
|||||||
{
|
{
|
||||||
/* der Client, der geloescht wird ist ein Server. Der Client, den wir gerade
|
/* der Client, der geloescht wird ist ein Server. Der Client, den wir gerade
|
||||||
* pruefen, ist ein Child von diesem und muss daher auch entfernt werden */
|
* pruefen, ist ein Child von diesem und muss daher auch entfernt werden */
|
||||||
Client_Destroy( c, NULL, msg);
|
Client_Destroy( c, NULL, msg, FALSE );
|
||||||
last = NULL;
|
last = NULL;
|
||||||
c = My_Clients;
|
c = My_Clients;
|
||||||
continue;
|
continue;
|
||||||
@ -364,22 +367,30 @@ GLOBAL VOID Client_Destroy( CLIENT *Client, CHAR *LogMsg, CHAR *FwdMsg )
|
|||||||
{
|
{
|
||||||
if( c->conn_id != NONE )
|
if( c->conn_id != NONE )
|
||||||
{
|
{
|
||||||
/* Ein lokaler User. Alle andere Server informieren! */
|
/* Ein lokaler User */
|
||||||
Log( LOG_NOTICE, "User \"%s\" unregistered (connection %d): %s", Client_Mask( c ), c->conn_id, txt );
|
Log( LOG_NOTICE, "User \"%s\" unregistered (connection %d): %s", Client_Mask( c ), c->conn_id, txt );
|
||||||
|
|
||||||
|
if( SendQuit )
|
||||||
|
{
|
||||||
|
/* Alle andere Server informieren! */
|
||||||
if( FwdMsg ) IRC_WriteStrServersPrefix( NULL, c, "QUIT :%s", FwdMsg );
|
if( FwdMsg ) IRC_WriteStrServersPrefix( NULL, c, "QUIT :%s", FwdMsg );
|
||||||
else IRC_WriteStrServersPrefix( NULL, c, "QUIT :" );
|
else IRC_WriteStrServersPrefix( NULL, c, "QUIT :" );
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Remote User. Andere Server informieren, ausser denen,
|
/* Remote User */
|
||||||
* die "in Richtung dem liegen", auf dem der User registriert
|
|
||||||
* ist. Von denen haben wir das QUIT ja wohl bekommen. */
|
|
||||||
Log( LOG_DEBUG, "User \"%s\" unregistered: %s", Client_Mask( c ), txt );
|
Log( LOG_DEBUG, "User \"%s\" unregistered: %s", Client_Mask( c ), txt );
|
||||||
|
|
||||||
|
if( SendQuit )
|
||||||
|
{
|
||||||
|
/* Andere Server informieren, ausser denen, die "in
|
||||||
|
* Richtung dem liegen", auf dem der User registriert
|
||||||
|
* ist. Von denen haben wir das QUIT ja wohl bekommen. */
|
||||||
if( FwdMsg ) IRC_WriteStrServersPrefix( Client_NextHop( c ), c, "QUIT :%s", FwdMsg );
|
if( FwdMsg ) IRC_WriteStrServersPrefix( Client_NextHop( c ), c, "QUIT :%s", FwdMsg );
|
||||||
else IRC_WriteStrServersPrefix( Client_NextHop( c ), c, "QUIT :" );
|
else IRC_WriteStrServersPrefix( Client_NextHop( c ), c, "QUIT :" );
|
||||||
}
|
}
|
||||||
|
}
|
||||||
Channel_RemoveClient( c, FwdMsg ? FwdMsg : c->id );
|
Channel_RemoveClient( c, FwdMsg ? FwdMsg : c->id );
|
||||||
}
|
}
|
||||||
else if( c->type == CLIENT_SERVER )
|
else if( c->type == CLIENT_SERVER )
|
||||||
|
@ -9,11 +9,14 @@
|
|||||||
* 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: client.h,v 1.23 2002/02/27 18:22:09 alex Exp $
|
* $Id: client.h,v 1.24 2002/03/11 22:04:10 alex Exp $
|
||||||
*
|
*
|
||||||
* client.h: Konfiguration des ngircd (Header)
|
* client.h: Konfiguration des ngircd (Header)
|
||||||
*
|
*
|
||||||
* $Log: client.h,v $
|
* $Log: client.h,v $
|
||||||
|
* Revision 1.24 2002/03/11 22:04:10 alex
|
||||||
|
* - Client_Destroy() hat neuen Paramter: QUITs fuer Clients verschicken?
|
||||||
|
*
|
||||||
* Revision 1.23 2002/02/27 18:22:09 alex
|
* Revision 1.23 2002/02/27 18:22:09 alex
|
||||||
* - neue Funktion Client_SetAway() und Client_Away() implementiert.
|
* - neue Funktion Client_SetAway() und Client_Away() implementiert.
|
||||||
*
|
*
|
||||||
@ -143,7 +146,7 @@ GLOBAL CLIENT *Client_NewRemoteServer( CLIENT *Introducer, CHAR *Hostname, CLIEN
|
|||||||
GLOBAL CLIENT *Client_NewRemoteUser( CLIENT *Introducer, CHAR *Nick, INT Hops, CHAR *User, CHAR *Hostname, INT Token, CHAR *Modes, CHAR *Info, BOOLEAN Idented );
|
GLOBAL CLIENT *Client_NewRemoteUser( CLIENT *Introducer, CHAR *Nick, INT Hops, CHAR *User, CHAR *Hostname, INT Token, CHAR *Modes, CHAR *Info, BOOLEAN Idented );
|
||||||
GLOBAL CLIENT *Client_New( CONN_ID Idx, CLIENT *Introducer, CLIENT *TopServer, INT Type, CHAR *ID, CHAR *User, CHAR *Hostname, CHAR *Info, INT Hops, INT Token, CHAR *Modes, BOOLEAN Idented );
|
GLOBAL CLIENT *Client_New( CONN_ID Idx, CLIENT *Introducer, CLIENT *TopServer, INT Type, CHAR *ID, CHAR *User, CHAR *Hostname, CHAR *Info, INT Hops, INT Token, CHAR *Modes, BOOLEAN Idented );
|
||||||
|
|
||||||
GLOBAL VOID Client_Destroy( CLIENT *Client, CHAR *LogMsg, CHAR *FwdMsg );
|
GLOBAL VOID Client_Destroy( CLIENT *Client, CHAR *LogMsg, CHAR *FwdMsg, BOOLEAN SendQuit );
|
||||||
|
|
||||||
GLOBAL CLIENT *Client_ThisServer( VOID );
|
GLOBAL CLIENT *Client_ThisServer( VOID );
|
||||||
|
|
||||||
|
@ -9,11 +9,14 @@
|
|||||||
* 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.50 2002/03/11 00:04:48 alex Exp $
|
* $Id: conn.c,v 1.51 2002/03/11 22:04:10 alex Exp $
|
||||||
*
|
*
|
||||||
* connect.h: Verwaltung aller Netz-Verbindungen ("connections")
|
* connect.h: Verwaltung aller Netz-Verbindungen ("connections")
|
||||||
*
|
*
|
||||||
* $Log: conn.c,v $
|
* $Log: conn.c,v $
|
||||||
|
* Revision 1.51 2002/03/11 22:04:10 alex
|
||||||
|
* - Client_Destroy() hat neuen Paramter: QUITs fuer Clients verschicken?
|
||||||
|
*
|
||||||
* Revision 1.50 2002/03/11 00:04:48 alex
|
* Revision 1.50 2002/03/11 00:04:48 alex
|
||||||
* - ein sofortiger Re-Connect wird nur dann versucht, wenn die Vernindung
|
* - ein sofortiger Re-Connect wird nur dann versucht, wenn die Vernindung
|
||||||
* "lange genug" bereits bestanden hatte.
|
* "lange genug" bereits bestanden hatte.
|
||||||
@ -591,7 +594,7 @@ GLOBAL VOID Conn_Close( CONN_ID Idx, CHAR *LogMsg, CHAR *FwdMsg, BOOLEAN InformC
|
|||||||
}
|
}
|
||||||
|
|
||||||
c = Client_GetFromConn( Idx );
|
c = Client_GetFromConn( Idx );
|
||||||
if( c ) Client_Destroy( c, LogMsg, FwdMsg );
|
if( c ) Client_Destroy( c, LogMsg, FwdMsg, TRUE );
|
||||||
|
|
||||||
if( My_Connections[Idx].res_stat )
|
if( My_Connections[Idx].res_stat )
|
||||||
{
|
{
|
||||||
|
@ -9,11 +9,14 @@
|
|||||||
* 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-login.c,v 1.5 2002/03/11 17:33:40 alex Exp $
|
* $Id: irc-login.c,v 1.6 2002/03/11 22:04:10 alex Exp $
|
||||||
*
|
*
|
||||||
* irc-login.c: Anmeldung und Abmeldung im IRC
|
* irc-login.c: Anmeldung und Abmeldung im IRC
|
||||||
*
|
*
|
||||||
* $Log: irc-login.c,v $
|
* $Log: irc-login.c,v $
|
||||||
|
* Revision 1.6 2002/03/11 22:04:10 alex
|
||||||
|
* - Client_Destroy() hat neuen Paramter: QUITs fuer Clients verschicken?
|
||||||
|
*
|
||||||
* Revision 1.5 2002/03/11 17:33:40 alex
|
* Revision 1.5 2002/03/11 17:33:40 alex
|
||||||
* - Log-Level von SQUIT und QUIT bei unbekannten Clients auf DEBUG herabgesetzt.
|
* - Log-Level von SQUIT und QUIT bei unbekannten Clients auf DEBUG herabgesetzt.
|
||||||
*
|
*
|
||||||
@ -289,8 +292,8 @@ GLOBAL BOOLEAN IRC_QUIT( CLIENT *Client, REQUEST *Req )
|
|||||||
return CONNECTED;
|
return CONNECTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( Req->argc == 0 ) Client_Destroy( target, "Got QUIT command.", NULL );
|
if( Req->argc == 0 ) Client_Destroy( target, "Got QUIT command.", NULL, TRUE );
|
||||||
else Client_Destroy( target, "Got QUIT command.", Req->argv[0] );
|
else Client_Destroy( target, "Got QUIT command.", Req->argv[0], TRUE );
|
||||||
|
|
||||||
return CONNECTED;
|
return CONNECTED;
|
||||||
}
|
}
|
||||||
|
@ -9,11 +9,14 @@
|
|||||||
* 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.3 2002/03/11 17:33:40 alex Exp $
|
* $Id: irc-server.c,v 1.4 2002/03/11 22:04:10 alex Exp $
|
||||||
*
|
*
|
||||||
* irc-server.c: IRC-Befehle fuer Server-Links
|
* irc-server.c: IRC-Befehle fuer Server-Links
|
||||||
*
|
*
|
||||||
* $Log: irc-server.c,v $
|
* $Log: irc-server.c,v $
|
||||||
|
* Revision 1.4 2002/03/11 22:04:10 alex
|
||||||
|
* - Client_Destroy() hat neuen Paramter: QUITs fuer Clients verschicken?
|
||||||
|
*
|
||||||
* Revision 1.3 2002/03/11 17:33:40 alex
|
* Revision 1.3 2002/03/11 17:33:40 alex
|
||||||
* - Log-Level von SQUIT und QUIT bei unbekannten Clients auf DEBUG herabgesetzt.
|
* - Log-Level von SQUIT und QUIT bei unbekannten Clients auf DEBUG herabgesetzt.
|
||||||
*
|
*
|
||||||
@ -351,7 +354,7 @@ GLOBAL BOOLEAN IRC_SQUIT( CLIENT *Client, REQUEST *Req )
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Verbindung hielt anderer Server */
|
/* Verbindung hielt anderer Server */
|
||||||
Client_Destroy( target, msg, Req->argv[1] );
|
Client_Destroy( target, msg, Req->argv[1], FALSE );
|
||||||
return CONNECTED;
|
return CONNECTED;
|
||||||
}
|
}
|
||||||
} /* IRC_SQUIT */
|
} /* IRC_SQUIT */
|
||||||
|
Loading…
Reference in New Issue
Block a user