]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/users.cpp
Annotations
[user/henk/code/inspircd.git] / src / users.cpp
index f8b8efeb0589a00f2fe3aeb30dab38d5ce85a201..8c6711d64e6807ecca69a5597c24b551cd9a9236 100644 (file)
@@ -973,7 +973,7 @@ void userrec::AddClient(InspIRCd* Instance, int socket, int port, bool iscached,
                userrec::QuitUser(Instance, _new,"Server is full");
                return;
        }
-       char* e = Instance->XLines->matches_exception(ipaddr);
+       char* e = Instance->XLines->matches_exception(_new);
        if (!e)
        {
                char* r = Instance->XLines->matches_zline(ipaddr);
@@ -1000,8 +1000,8 @@ void userrec::AddClient(InspIRCd* Instance, int socket, int port, bool iscached,
 
 long userrec::GlobalCloneCount()
 {
-       char u1[1024];
-       char u2[1024];
+       char u1[1024] = {0};
+       char u2[1024] = {0};
        long x = 0;
        for (user_hash::const_iterator a = ServerInstance->clientlist.begin(); a != ServerInstance->clientlist.end(); a++)
        {
@@ -1068,13 +1068,11 @@ void userrec::FullConnect(CullList* Goners)
                return;
        }
 
-       char match_against[MAXBUF];
-       snprintf(match_against,MAXBUF,"%s@%s", this->ident, this->host);
-       char* e = ServerInstance->XLines->matches_exception(match_against);
+       char* e = ServerInstance->XLines->matches_exception(this);
 
        if (!e)
        {
-               char* r = ServerInstance->XLines->matches_gline(match_against);
+               char* r = ServerInstance->XLines->matches_gline(this);
                
                if (r)
                {
@@ -1084,7 +1082,7 @@ void userrec::FullConnect(CullList* Goners)
                        return;
                }
                
-               r = ServerInstance->XLines->matches_kline(match_against);
+               r = ServerInstance->XLines->matches_kline(this);
                
                if (r)
                {
@@ -1717,6 +1715,9 @@ void userrec::ModChannelCount(int n)
 
 bool userrec::ChangeName(const char* gecos)
 {
+       if (!strcmp(gecos, this->fullname))
+               return true;
+
        if (IS_LOCAL(this))
        {
                int MOD_RESULT = 0;
@@ -1731,6 +1732,9 @@ bool userrec::ChangeName(const char* gecos)
 
 bool userrec::ChangeDisplayedHost(const char* host)
 {
+       if (!strcmp(host, this->dhost))
+               return true;
+
        if (IS_LOCAL(this))
        {
                int MOD_RESULT = 0;
@@ -1750,10 +1754,10 @@ bool userrec::ChangeDisplayedHost(const char* host)
                {
                        if ((*i)->channel)
                        {
-                               (*i)->channel->WriteAllExceptSender(this, 0, "JOIN %s", (*i)->channel->name);
+                               (*i)->channel->WriteAllExceptSender(this, false, 0, "JOIN %s", (*i)->channel->name);
                                std::string n = this->ServerInstance->Modes->ModeString(this, (*i)->channel);
-                               if (n.length())
-                                       (*i)->channel->WriteChannelWithServ(this->ServerInstance->Config->ServerName, "MODE %s +%s", (*i)->channel->name, n.c_str());
+                               if (n.length() > 0)
+                                       (*i)->channel->WriteAllExceptSender(this, true, 0, "MODE %s +%s", (*i)->channel->name, n.c_str());
                        }
                }
        }
@@ -1766,6 +1770,9 @@ bool userrec::ChangeDisplayedHost(const char* host)
 
 bool userrec::ChangeIdent(const char* newident)
 {
+       if (!strcmp(newident, this->ident))
+               return true;
+
        if (this->ServerInstance->Config->CycleHosts)
                this->WriteCommonExcept("%s","QUIT :Changing ident");
 
@@ -1777,10 +1784,10 @@ bool userrec::ChangeIdent(const char* newident)
                {
                        if ((*i)->channel)
                        {
-                               (*i)->channel->WriteAllExceptSender(this, 0, "JOIN %s", (*i)->channel->name);
+                               (*i)->channel->WriteAllExceptSender(this, false, 0, "JOIN %s", (*i)->channel->name);
                                std::string n = this->ServerInstance->Modes->ModeString(this, (*i)->channel);
-                               if (n.length())
-                                       (*i)->channel->WriteChannelWithServ(this->ServerInstance->Config->ServerName, "MODE %s +%s", (*i)->channel->name, n.c_str());
+                               if (n.length() > 0)
+                                       (*i)->channel->WriteAllExceptSender(this, true, 0, "MODE %s +%s", (*i)->channel->name, n.c_str());
                        }
                }
        }