Fixed the order of signon/signoff messages in m_watch (bug #410)

git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8023 e03df62e-2008-0410-955e-edbf42e46eb7
This commit is contained in:
special 2007-09-11 02:55:44 +00:00
parent cff411663d
commit 639a462ea4

View File

@ -416,22 +416,8 @@ class Modulewatch : public Module
virtual void OnUserPostNick(userrec* user, const std::string &oldnick) virtual void OnUserPostNick(userrec* user, const std::string &oldnick)
{ {
watchentries::iterator new_online = whos_watching_me->find(user->nick);
watchentries::iterator new_offline = whos_watching_me->find(assign(oldnick)); watchentries::iterator new_offline = whos_watching_me->find(assign(oldnick));
watchentries::iterator new_online = whos_watching_me->find(user->nick);
if (new_online != whos_watching_me->end())
{
for (std::deque<userrec*>::iterator n = new_online->second.begin(); n != new_online->second.end(); n++)
{
watchlist* wl;
if ((*n)->GetExt("watchlist", wl))
{
(*wl)[user->nick] = std::string(user->ident).append(" ").append(user->dhost).append(" ").append(ConvToStr(user->age));
if (!user->Visibility || user->Visibility->VisibleTo(user))
(*n)->WriteServ("600 %s %s %s :arrived online", (*n)->nick, user->nick, (*wl)[user->nick].c_str());
}
}
}
if (new_offline != whos_watching_me->end()) if (new_offline != whos_watching_me->end())
{ {
@ -446,6 +432,20 @@ class Modulewatch : public Module
} }
} }
} }
if (new_online != whos_watching_me->end())
{
for (std::deque<userrec*>::iterator n = new_online->second.begin(); n != new_online->second.end(); n++)
{
watchlist* wl;
if ((*n)->GetExt("watchlist", wl))
{
(*wl)[user->nick] = std::string(user->ident).append(" ").append(user->dhost).append(" ").append(ConvToStr(user->age));
if (!user->Visibility || user->Visibility->VisibleTo(user))
(*n)->WriteServ("600 %s %s %s :arrived online", (*n)->nick, user->nick, (*wl)[user->nick].c_str());
}
}
}
} }
virtual void On005Numeric(std::string &output) virtual void On005Numeric(std::string &output)