diff options
Diffstat (limited to 'src/protocol/bahamut.c')
| -rw-r--r-- | src/protocol/bahamut.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/protocol/bahamut.c b/src/protocol/bahamut.c index 288b36329..6ec072b87 100644 --- a/src/protocol/bahamut.c +++ b/src/protocol/bahamut.c @@ -141,17 +141,17 @@ void bahamut_cmd_chghost(const char *nick, const char *vhost) class BahamutIRCdProto : public IRCDProto { - void SendModeInternal(BotInfo *source, const char *dest, const char *buf) + void SendModeInternal(BotInfo *source, Channel *dest, const char *buf) { if (!buf) return; - if (ircdcap->tsmode && (uplink_capab & ircdcap->tsmode)) send_cmd(source->nick, "MODE %s 0 %s", dest, buf); - else send_cmd(source->nick, "MODE %s %s", dest, buf); + if (ircdcap->tsmode && (uplink_capab & ircdcap->tsmode)) send_cmd(source->nick, "MODE %s 0 %s", dest->name, buf); + else send_cmd(source->nick, "MODE %s %s", dest->name, buf); } - void SendModeInternal(User *u, const char *buf) + void SendModeInternal(BotInfo *bi, User *u, const char *buf) { if (!buf) return; - send_cmd(Config.ServerName, "SVSMODE %s %ld %s", u->nick, static_cast<long>(u->timestamp), buf); + send_cmd(bi ? bi->nick : Config.ServerName, "SVSMODE %s %ld %s", u->nick, static_cast<long>(u->timestamp), buf); } /* SVSHOLD - set */ @@ -271,7 +271,7 @@ class BahamutIRCdProto : public IRCDProto */ void SendSVSMode(User *u, int ac, const char **av) { - this->SendModeInternal(u, merge_args(ac, av)); + this->SendModeInternal(NULL, u, merge_args(ac, av)); } void SendEOB() @@ -302,8 +302,9 @@ class BahamutIRCdProto : public IRCDProto /* nc_change was = 1, and there is no na->status */ void SendUnregisteredNick(User *u) { - u->RemoveMode(UMODE_REGISTERED); - ircdproto->SendMode(u, "+d 1"); + BotInfo *bi = findbot(Config.s_NickServ); + u->RemoveMode(bi, UMODE_REGISTERED); + ircdproto->SendMode(bi, u, "+d 1"); } /* SERVER */ @@ -340,8 +341,9 @@ class BahamutIRCdProto : public IRCDProto u->nc->Extend("authenticationtoken", sstrdup(svidbuf)); - u->SetMode(UMODE_REGISTERED); - ircdproto->SendMode(u, "+d %s", svidbuf); + BotInfo *bi = findbot(Config.s_NickServ); + u->SetMode(bi, UMODE_REGISTERED); + ircdproto->SendMode(bi, u, "+d %s", svidbuf); } } ircd_proto; |
