Allow IRC services to change their nick names.
This commit is contained in:
parent
33f32dbd67
commit
4e125fb67c
|
@ -180,22 +180,17 @@ IRC_NICK( CLIENT *Client, REQUEST *Req )
|
||||||
assert( Client != NULL );
|
assert( Client != NULL );
|
||||||
assert( Req != NULL );
|
assert( Req != NULL );
|
||||||
|
|
||||||
#ifndef STRICT_RFC
|
|
||||||
/* Some IRC clients, for example BitchX, send the NICK and USER
|
/* Some IRC clients, for example BitchX, send the NICK and USER
|
||||||
* commands in the wrong order ... */
|
* commands in the wrong order ... */
|
||||||
if( Client_Type( Client ) == CLIENT_UNKNOWN
|
if(Client_Type(Client) == CLIENT_UNKNOWN
|
||||||
|| Client_Type( Client ) == CLIENT_GOTPASS
|
|| Client_Type(Client) == CLIENT_GOTPASS
|
||||||
|| Client_Type( Client ) == CLIENT_GOTNICK
|
|| Client_Type(Client) == CLIENT_GOTNICK
|
||||||
|| Client_Type( Client ) == CLIENT_GOTUSER
|
#ifndef STRICT_RFC
|
||||||
|| Client_Type( Client ) == CLIENT_USER
|
|| Client_Type(Client) == CLIENT_GOTUSER
|
||||||
|| ( Client_Type( Client ) == CLIENT_SERVER && Req->argc == 1 ))
|
|
||||||
#else
|
|
||||||
if( Client_Type( Client ) == CLIENT_UNKNOWN
|
|
||||||
|| Client_Type( Client ) == CLIENT_GOTPASS
|
|
||||||
|| Client_Type( Client ) == CLIENT_GOTNICK
|
|
||||||
|| Client_Type( Client ) == CLIENT_USER
|
|
||||||
|| ( Client_Type( Client ) == CLIENT_SERVER && Req->argc == 1 ))
|
|
||||||
#endif
|
#endif
|
||||||
|
|| Client_Type(Client) == CLIENT_USER
|
||||||
|
|| Client_Type(Client) == CLIENT_SERVICE
|
||||||
|
|| (Client_Type(Client) == CLIENT_SERVER && Req->argc == 1))
|
||||||
{
|
{
|
||||||
/* User registration or change of nickname */
|
/* User registration or change of nickname */
|
||||||
|
|
||||||
|
@ -243,9 +238,9 @@ IRC_NICK( CLIENT *Client, REQUEST *Req )
|
||||||
return CONNECTED;
|
return CONNECTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(( Client_Type( target ) != CLIENT_USER )
|
if (Client_Type(target) != CLIENT_USER &&
|
||||||
&& ( Client_Type( target ) != CLIENT_SERVER ))
|
Client_Type(target) != CLIENT_SERVICE &&
|
||||||
{
|
Client_Type(target) != CLIENT_SERVER) {
|
||||||
/* New client */
|
/* New client */
|
||||||
Log( LOG_DEBUG, "Connection %d: got valid NICK command ...",
|
Log( LOG_DEBUG, "Connection %d: got valid NICK command ...",
|
||||||
Client_Conn( Client ));
|
Client_Conn( Client ));
|
||||||
|
@ -259,25 +254,22 @@ IRC_NICK( CLIENT *Client, REQUEST *Req )
|
||||||
return Hello_User( Client );
|
return Hello_User( Client );
|
||||||
else
|
else
|
||||||
Client_SetType( Client, CLIENT_GOTNICK );
|
Client_SetType( Client, CLIENT_GOTNICK );
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
/* Nickname change */
|
/* Nickname change */
|
||||||
if (Client_Conn(target) > NONE) {
|
if (Client_Conn(target) > NONE) {
|
||||||
/* Local client */
|
/* Local client */
|
||||||
Log(LOG_INFO,
|
Log(LOG_INFO,
|
||||||
"User \"%s\" changed nick (connection %d): \"%s\" -> \"%s\".",
|
"%s \"%s\" changed nick (connection %d): \"%s\" -> \"%s\".",
|
||||||
Client_Mask(target), Client_Conn(target),
|
Client_TypeText(target), Client_Mask(target),
|
||||||
Client_ID(target), Req->argv[0]);
|
Client_Conn(target), Client_ID(target),
|
||||||
|
Req->argv[0]);
|
||||||
Conn_UpdateIdle(Client_Conn(target));
|
Conn_UpdateIdle(Client_Conn(target));
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
/* Remote client */
|
/* Remote client */
|
||||||
Log( LOG_DEBUG,
|
LogDebug("%s \"%s\" changed nick: \"%s\" -> \"%s\".",
|
||||||
"User \"%s\" changed nick: \"%s\" -> \"%s\".",
|
Client_TypeText(target),
|
||||||
Client_Mask( target ), Client_ID( target ),
|
Client_Mask(target), Client_ID(target),
|
||||||
Req->argv[0] );
|
Req->argv[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Inform all users and servers (which have to know)
|
/* Inform all users and servers (which have to know)
|
||||||
|
|
Loading…
Reference in New Issue