if (!user || !cn || user->registered != REG_ALL)
return NULL;
- char cname[MAXBUF];
std::string privs;
Channel *Ptr;
}
}
- strlcpy(cname, cn, ServerInstance->Config->Limits.ChanMax);
+ std::string cname;
+ cname.assign(std::string(cn), 0, ServerInstance->Config->Limits.ChanMax);
Ptr = ServerInstance->FindChan(cname);
bool created_by_local = false;
if (IS_LOCAL(user) && override == false)
{
ModResult MOD_RESULT;
- FIRST_MOD_RESULT(OnUserPreJoin, MOD_RESULT, (user, NULL, cname, privs, key ? key : ""));
+ FIRST_MOD_RESULT(OnUserPreJoin, MOD_RESULT, (user, NULL, cname.c_str(), privs, key ? key : ""));
if (MOD_RESULT == MOD_RES_DENY)
return NULL;
}
if (IS_LOCAL(user) && override == false)
{
ModResult MOD_RESULT;
- FIRST_MOD_RESULT(OnUserPreJoin, MOD_RESULT, (user, Ptr, cname, privs, key ? key : ""));
+ FIRST_MOD_RESULT(OnUserPreJoin, MOD_RESULT, (user, Ptr, cname.c_str(), privs, key ? key : ""));
if (MOD_RESULT == MOD_RES_DENY)
{
return NULL;
return (result == MOD_RES_DENY);
// extbans were handled above, if this is one it obviously didn't match
- if (mask[1] == ':')
+ if ((mask.length() <= 2) || (mask[1] == ':'))
return false;
std::string::size_type at = mask.find('@');
int count = 0;
for (UserMembIter i = userlist.begin(); i != userlist.end(); i++)
{
- if (!(i->first->IsModeSet('i')))
+ if (!i->first->quitting && !i->first->IsModeSet('i'))
count++;
}
for (UserMembIter i = userlist.begin(); i != userlist.end(); i++)
{
+ if (i->first->quitting)
+ continue;
if ((!has_user) && (i->first->IsModeSet('i')))
{
/*
if ((check_expired) && (inv->expiry != 0) && (inv->expiry <= ServerInstance->Time()))
{
/* Expired invite, remove it. */
- ServerInstance->Logs->Log("INVITATION", DEBUG, "Invitation::Find ecountered expired entry: %p expired %s", (void*) inv, ServerInstance->TimeString(inv->expiry).c_str());
+ std::string expiration = ServerInstance->TimeString(inv->expiry);
+ ServerInstance->Logs->Log("INVITATION", DEBUG, "Invitation::Find ecountered expired entry: %p expired %s", (void*) inv, expiration.c_str());
i = locallist.erase(i);
inv->cull();
delete inv;