]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/users.cpp
Update wiki links to use HTTPS and point to the correct pages.
[user/henk/code/inspircd.git] / src / users.cpp
index 91db5200a98b3b9fefa8db5cb0df5dd782942ec0..4dbb73a1f55ef7e4e5492784d1165d283c832c53 100644 (file)
@@ -837,6 +837,7 @@ void LocalUser::FullConnect()
 void User::InvalidateCache()
 {
        /* Invalidate cache */
+       cachedip.clear();
        cached_fullhost.clear();
        cached_hostip.clear();
        cached_makehost.clear();
@@ -1001,8 +1002,7 @@ irc::sockets::cidr_mask User::GetCIDRMask()
 
 bool User::SetClientIP(const char* sip, bool recheck_eline)
 {
-       cachedip.clear();
-       cached_hostip.clear();
+       this->InvalidateCache();
        return irc::sockets::aptosa(sip, 0, client_sa);
 }
 
@@ -1321,26 +1321,19 @@ void User::SendText(const char *text, ...)
 
 void User::SendText(const std::string &LinePrefix, std::stringstream &TextStream)
 {
-       char line[MAXBUF];
-       int start_pos = LinePrefix.length();
-       int pos = start_pos;
-       memcpy(line, LinePrefix.data(), pos);
+       std::string line;
        std::string Word;
        while (TextStream >> Word)
        {
-               int len = Word.length();
-               if (pos + len + 12 > MAXBUF)
+               size_t lineLength = LinePrefix.length() + line.length() + Word.length() + 13;
+               if (lineLength > MAXBUF)
                {
-                       line[pos] = '\0';
-                       SendText(std::string(line));
-                       pos = start_pos;
+                       SendText(LinePrefix + line);
+                       line.clear();
                }
-               line[pos] = ' ';
-               memcpy(line + pos + 1, Word.data(), len);
-               pos += len + 1;
+               line += " " + Word;
        }
-       line[pos] = '\0';
-       SendText(std::string(line));
+       SendText(LinePrefix + line);
 }
 
 /* return 0 or 1 depending if users u and u2 share one or more common channels
@@ -1405,6 +1398,8 @@ void User::DoHostCycle(const std::string &quitline)
 
        FOREACH_MOD(I_OnBuildNeighborList,OnBuildNeighborList(this, include_c, exceptions));
 
+       // Users shouldn't see themselves quitting when host cycling
+       exceptions.erase(this);
        for (std::map<User*,bool>::iterator i = exceptions.begin(); i != exceptions.end(); ++i)
        {
                LocalUser* u = IS_LOCAL(i->first);