commit - 881b9af2512a9707cdd599f84628a03c4e22cf2b
commit + 55c04e691d2e069eebf1f2cc7d9992d2510f681f
blob - 68b5eb6fb5f559fe47252a9e34949f01f125ff91
blob + 17b604465843c6d4f9db12040e3a643f573155f2
--- src/ngircd/irc-oper.c
+++ src/ngircd/irc-oper.c
assert(Client != NULL);
assert(Req != NULL);
- if (!Op_Check(Client, Req))
+ if (Client_Type(Client) != CLIENT_SERVER
+ && !Client_HasMode(Client, 'o'))
return Op_NoPrivileges(Client, Req);
/* Bad number of parameters? */
if (Req->argc == 3 || Req->argc == 6) {
/* 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);
if (! from)
return IRC_WriteStrClient(Client, ERR_NOSUCHNICK_MSG,
return CONNECTED;
}
- 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));
+ if (!Op_Check(from, Req))
+ return Op_NoPrivileges(Client, Req);
switch (Req->argc) {
case 1:
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;
} /* IRC_CONNECT */