From: Peter Powell Date: Sun, 20 Jan 2019 09:52:38 +0000 (+0000) Subject: Call the OnUserInit hook from earlier in UserManager::AddUser. X-Git-Url: https://git.netwichtig.de/gitweb/?a=commitdiff_plain;h=0a1f9bc59494a532a91bc9c8afcecb31ece656ee;p=user%2Fhenk%2Fcode%2Finspircd.git Call the OnUserInit hook from earlier in UserManager::AddUser. This fixes messages being lost when sending them to a user who has only just connected to the server. --- diff --git a/src/usermanager.cpp b/src/usermanager.cpp index a70a00085..053a308cb 100644 --- a/src/usermanager.cpp +++ b/src/usermanager.cpp @@ -76,6 +76,7 @@ void UserManager::AddUser(int socket, ListenSocket* via, irc::sockets::sockaddrs this->clientlist[New->nick] = New; this->AddClone(New); this->local_users.push_front(New); + FOREACH_MOD(OnUserInit, (New)); if (!SocketEngine::AddFd(eh, FD_WANT_FAST_READ | FD_WANT_EDGE_WRITE)) { @@ -162,8 +163,6 @@ void UserManager::AddUser(int socket, ListenSocket* via, irc::sockets::sockaddrs FOREACH_MOD(OnSetUserIP, (New)); if (New->quitting) return; - - FOREACH_MOD(OnUserInit, (New)); } void UserManager::QuitUser(User* user, const std::string& quitreason, const std::string* operreason) diff --git a/src/users.cpp b/src/users.cpp index a0b9c9d03..eb87824fc 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -804,7 +804,11 @@ void LocalUser::Write(const ClientProtocol::SerializedMessage& text) void LocalUser::Send(ClientProtocol::Event& protoev) { if (!serializer) + { + ServerInstance->Logs->Log("USERS", LOG_DEBUG, "BUG: LocalUser::Send() called on %s who does not have a serializer!", + GetFullRealHost().c_str()); return; + } // In the most common case a static LocalUser field, sendmsglist, is passed to the event to be // populated. The list is cleared before returning.