#include "portab.h"
-static char UNUSED id[] = "$Id: irc-login.c,v 1.29 2002/12/30 00:01:45 alex Exp $";
+static char UNUSED id[] = "$Id: irc-login.c,v 1.33 2003/01/08 22:28:12 alex Exp $";
#include "imp.h"
#include <assert.h>
#include "ngircd.h"
#include "resolve.h"
-#include "conn.h"
+#include "conn-func.h"
#include "conf.h"
#include "client.h"
#include "channel.h"
#include "log.h"
#include "messages.h"
#include "parse.h"
+#include "irc.h"
#include "irc-info.h"
#include "irc-write.h"
{
/* es wurde ein Ziel-Client angegeben */
target = Client_Search( Req->argv[1] );
- if( ! target ) return IRC_WriteStrClient( Client, ERR_NOSUCHSERVER_MSG, Client_ID( Client ), Req->argv[1] );
+ if(( ! target ) || ( Client_Type( target ) != CLIENT_SERVER )) return IRC_WriteStrClient( Client, ERR_NOSUCHSERVER_MSG, Client_ID( Client ), Req->argv[1] );
if( target != Client_ThisServer( ))
{
/* ok, forwarden */
if( Req->argc == 2 )
{
target = Client_Search( Req->argv[1] );
- if( ! target ) return IRC_WriteStrClient( Client, ERR_NOSUCHSERVER_MSG, Client_ID( Client ), Req->argv[1] );
+ if(( ! target ) || ( Client_Type( target ) != CLIENT_SERVER )) return IRC_WriteStrClient( Client, ERR_NOSUCHSERVER_MSG, Client_ID( Client ), Req->argv[1] );
if( target != Client_ThisServer( ))
{
/* ok, forwarden */
if( ! IRC_WriteStrClient( Client, RPL_MYINFO_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )), VERSION, USERMODES, CHANMODES )) return FALSE;
/* Features */
- if( ! IRC_WriteStrClient( Client, RPL_FEATURE_MSG, Client_ID( Client ), CLIENT_NICK_LEN - 1, CHANNEL_TOPIC_LEN - 1, CLIENT_AWAY_LEN - 1, Conf_MaxJoins )) return DISCONNECTED;
+ if( ! IRC_WriteStrClient( Client, RPL_ISUPPORT_MSG, Client_ID( Client ), CLIENT_NICK_LEN - 1, CHANNEL_TOPIC_LEN - 1, CLIENT_AWAY_LEN - 1, Conf_MaxJoins )) return DISCONNECTED;
Client_SetType( Client, CLIENT_USER );
LOCAL VOID
Kill_Nick( CHAR *Nick, CHAR *Reason )
{
- CLIENT *c;
+ REQUEST r;
assert( Nick != NULL );
assert( Reason != NULL );
- Log( LOG_ERR, "User(s) with nick \"%s\" will be disconnected: %s", Nick, Reason );
-
- /* andere Server benachrichtigen */
- IRC_WriteStrServers( NULL, "KILL %s :%s", Nick, Reason );
+ r.prefix = Client_ThisServer( );
+ r.argv[0] = Nick;
+ r.argv[1] = Reason;
+ r.argc = 2;
- /* Ggf. einen eigenen Client toeten */
- c = Client_Search( Nick );
- if( c && ( Client_Conn( c ) != NONE )) Conn_Close( Client_Conn( c ), NULL, Reason, TRUE );
+ Log( LOG_ERR, "User(s) with nick \"%s\" will be disconnected: %s", Nick, Reason );
+ IRC_KILL( Client_ThisServer( ), &r );
} /* Kill_Nick */