+GLOBAL BOOLEAN IRC_SQUIT( CLIENT *Client, REQUEST *Req )
+{
+ CLIENT *target;
+
+ assert( Client != NULL );
+ assert( Req != NULL );
+
+ /* SQUIT ist nur fuer Server erlaubt */
+ if( Client_Type( Client ) != CLIENT_SERVER ) return IRC_WriteStrClient( Client, ERR_NOTREGISTERED_MSG, Client_ID( Client ));
+
+ /* Falsche Anzahl Parameter? */
+ if( Req->argc != 2 ) return IRC_WriteStrClient( Client, ERR_NEEDMOREPARAMS_MSG, Client_ID( Client ), Req->command );
+
+ target = Client_GetFromID( Req->argv[0] );
+ if( ! target )
+ {
+ Log( LOG_ALERT, "Got SQUIT from %s for unknown server \%s\"!?", Client_ID( Client ), Req->argv[0] );
+ return CONNECTED;
+ }
+
+ if( target == Client ) Log( LOG_NOTICE, "Got SQUIT from %s: %s", Client_ID( Client ), Req->argv[1] );
+ else Log( LOG_NOTICE, "Got SQUIT from %s for %s: %s", Client_ID( Client ), Client_ID( target ), Req->argv[1] );
+
+ /* FIXME: das SQUIT muss an alle Server weiter-
+ * geleitet werden ... */
+
+ if( Client_Conn( target ) > NONE ) Conn_Close( Client_Conn( target ), Req->argv[1] );
+ else Client_Destroy( target );
+ return DISCONNECTED;
+} /* IRC_SQUIT */
+
+