Make sure forwarded CONNECT commands are handled correctly
This commit is contained in:
parent
881b9af251
commit
55c04e691d
|
@ -184,7 +184,8 @@ IRC_CONNECT(CLIENT * Client, REQUEST * Req)
|
||||||
assert(Client != NULL);
|
assert(Client != NULL);
|
||||||
assert(Req != NULL);
|
assert(Req != NULL);
|
||||||
|
|
||||||
if (!Op_Check(Client, Req))
|
if (Client_Type(Client) != CLIENT_SERVER
|
||||||
|
&& !Client_HasMode(Client, 'o'))
|
||||||
return Op_NoPrivileges(Client, Req);
|
return Op_NoPrivileges(Client, Req);
|
||||||
|
|
||||||
/* Bad number of parameters? */
|
/* Bad number of parameters? */
|
||||||
|
@ -203,7 +204,7 @@ IRC_CONNECT(CLIENT * Client, REQUEST * Req)
|
||||||
|
|
||||||
if (Req->argc == 3 || Req->argc == 6) {
|
if (Req->argc == 3 || Req->argc == 6) {
|
||||||
/* This CONNECT has a target parameter */
|
/* This CONNECT has a target parameter */
|
||||||
if (Client_Type(Client) == CLIENT_SERVER)
|
if (Client_Type(Client) == CLIENT_SERVER && Req->prefix)
|
||||||
from = Client_Search(Req->prefix);
|
from = Client_Search(Req->prefix);
|
||||||
if (! from)
|
if (! from)
|
||||||
return IRC_WriteStrClient(Client, ERR_NOSUCHNICK_MSG,
|
return IRC_WriteStrClient(Client, ERR_NOSUCHNICK_MSG,
|
||||||
|
@ -230,12 +231,8 @@ IRC_CONNECT(CLIENT * Client, REQUEST * Req)
|
||||||
return CONNECTED;
|
return CONNECTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
Log(LOG_NOTICE | LOG_snotice,
|
if (!Op_Check(from, Req))
|
||||||
"Got CONNECT command from \"%s\" for \"%s\".", Client_Mask(from),
|
return Op_NoPrivileges(Client, Req);
|
||||||
Req->argv[0]);
|
|
||||||
IRC_SendWallops(Client_ThisServer(), Client_ThisServer(),
|
|
||||||
"Received CONNECT %s from %s",
|
|
||||||
Req->argv[0], Client_ID(from));
|
|
||||||
|
|
||||||
switch (Req->argc) {
|
switch (Req->argc) {
|
||||||
case 1:
|
case 1:
|
||||||
|
@ -263,6 +260,13 @@ IRC_CONNECT(CLIENT * Client, REQUEST * Req)
|
||||||
Req->argv[0]);
|
Req->argv[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Log(LOG_NOTICE | LOG_snotice,
|
||||||
|
"Got CONNECT command from \"%s\" for \"%s\".", Client_Mask(from),
|
||||||
|
Req->argv[0]);
|
||||||
|
IRC_SendWallops(Client_ThisServer(), Client_ThisServer(),
|
||||||
|
"Received CONNECT %s from %s",
|
||||||
|
Req->argv[0], Client_ID(from));
|
||||||
|
|
||||||
return CONNECTED;
|
return CONNECTED;
|
||||||
} /* IRC_CONNECT */
|
} /* IRC_CONNECT */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue