]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/configreader.cpp
Fix user->host not being assigned correctly for new connections
[user/henk/code/inspircd.git] / src / configreader.cpp
index 4d55e72e2b0e1874372576f5fe8b41ccbd4bed55..e184353160270898964ac22f8b3409820ae36865 100644 (file)
@@ -125,7 +125,7 @@ void ServerConfig::Update005()
 void ServerConfig::Send005(User* user)
 {
        for (std::vector<std::string>::iterator line = ServerInstance->Config->isupport.begin(); line != ServerInstance->Config->isupport.end(); line++)
-               user->WriteNumeric(005, "%s %s", user->nick, line->c_str());
+               user->WriteNumeric(005, "%s %s", user->nick.c_str(), line->c_str());
 }
 
 bool ServerConfig::CheckOnce(const char* tag, ConfigDataHash &newconf)
@@ -525,10 +525,10 @@ bool DoConnect(ServerConfig* conf, const char*, char**, ValueList &values, int*)
        {
                ConnectClass* cc = *item;
                if (
-                        (*name && (cc->GetName() == name)) ||
-                        (*allow && (cc->GetHost() == allow)) ||
-                        (*deny && (cc->GetHost() == deny)) ||
-                        (port && (cc->GetPort() == port))
+                        ((*name && (cc->GetName() == name)) || // if the name is the same
+                        (*allow && (cc->GetHost() == allow)) || // or the allow is the same
+                        (*deny && (cc->GetHost() == deny))) && // or the deny is the same
+                        (!port || port && (cc->GetPort() == port)) // and there is no port, or there is a port and the port is the same
                   )
                {
                        /* reenable class so users can be shoved into it :P */
@@ -731,11 +731,11 @@ void ServerConfig::ReportConfigError(const std::string &errormessage, bool bail,
                /* ":ServerInstance->Config->ServerName NOTICE user->nick :" */
                if (user)
                {
-                       prefixlen = strlen(this->ServerName) + strlen(user->nick) + 11;
-                       user->WriteServ("NOTICE %s :There were errors in the configuration file:",user->nick);
+                       prefixlen = strlen(this->ServerName) + user->nick.length() + 11;
+                       user->WriteServ("NOTICE %s :There were errors in the configuration file:",user->nick.c_str());
                        while (start < errors.length())
                        {
-                               user->WriteServ("NOTICE %s :%s",user->nick, errors.substr(start, 510 - prefixlen).c_str());
+                               user->WriteServ("NOTICE %s :%s",user->nick.c_str(), errors.substr(start, 510 - prefixlen).c_str());
                                start += 510 - prefixlen;
                        }
                }
@@ -961,7 +961,7 @@ void ServerConfig::Read(bool bail, User* user)
 
                /* Read the values of all the tags which occur once or not at all, and call their callbacks.
                 */
-               for (int Index = 0; Values[Index].tag; Index++)
+               for (int Index = 0; Values[Index].tag; ++Index)
                {
                        char item[MAXBUF];
                        int dt = Values[Index].datatype;
@@ -997,7 +997,6 @@ void ServerConfig::Read(bool bail, User* user)
                                        ValueContainerChar* vcc = (ValueContainerChar*)Values[Index].val;
                                        this->ValidateHostname(vi.GetString(), Values[Index].tag, Values[Index].value);
                                        vcc->Set(vi.GetString(), strlen(vi.GetString()) + 1);
-                                       ServerInstance->Logs->Log("CONFIG",DEFAULT,"Got %s", vi.GetString());
                                }
                                break;
                                case DT_IPADDRESS:
@@ -1052,7 +1051,7 @@ void ServerConfig::Read(bool bail, User* user)
                 * and call the callbacks associated with them. We have three
                 * callbacks for these, a 'start', 'item' and 'end' callback.
                 */
-               for (int Index = 0; MultiValues[Index].tag; Index++)
+               for (int Index = 0; MultiValues[Index].tag; ++Index)
                {
                        ServerInstance->Threads->Mutex(true);
                        MultiValues[Index].init_function(this, MultiValues[Index].tag);
@@ -1060,10 +1059,10 @@ void ServerConfig::Read(bool bail, User* user)
 
                        int number_of_tags = ConfValueEnum(newconfig, MultiValues[Index].tag);
 
-                       for (int tagnum = 0; tagnum < number_of_tags; tagnum++)
+                       for (int tagnum = 0; tagnum < number_of_tags; ++tagnum)
                        {
                                ValueList vl;
-                               for (int valuenum = 0; MultiValues[Index].items[valuenum]; valuenum++)
+                               for (int valuenum = 0; (MultiValues[Index].items[valuenum]) && (valuenum < MAX_VALUES_PER_TAG); ++valuenum)
                                {
                                        int dt = MultiValues[Index].datatype[valuenum];
                                        bool allow_newlines =  ((dt & DT_ALLOW_NEWLINE) > 0);
@@ -1192,7 +1191,7 @@ void ServerConfig::Read(bool bail, User* user)
                        if (!foundclass)
                        {
                                if (user)
-                                       user->WriteServ("NOTICE %s :*** Warning: Oper type '%s' has a missing class named '%s', this does nothing!", user->nick, item, classname.c_str());
+                                       user->WriteServ("NOTICE %s :*** Warning: Oper type '%s' has a missing class named '%s', this does nothing!", user->nick.c_str(), item, classname.c_str());
                                else
                                {
                                        if (bail)
@@ -1229,12 +1228,12 @@ void ServerConfig::Read(bool bail, User* user)
                if (pl.size() && user)
                {
                        ServerInstance->Threads->Mutex(true);
-                       user->WriteServ("NOTICE %s :*** Not all your client ports could be bound.", user->nick);
-                       user->WriteServ("NOTICE %s :*** The following port(s) failed to bind:", user->nick);
+                       user->WriteServ("NOTICE %s :*** Not all your client ports could be bound.", user->nick.c_str());
+                       user->WriteServ("NOTICE %s :*** The following port(s) failed to bind:", user->nick.c_str());
                        int j = 1;
                        for (FailedPortList::iterator i = pl.begin(); i != pl.end(); i++, j++)
                        {
-                               user->WriteServ("NOTICE %s :*** %d.   IP: %s     Port: %lu", user->nick, j, i->first.empty() ? "<all>" : i->first.c_str(), (unsigned long)i->second);
+                               user->WriteServ("NOTICE %s :*** %d.   IP: %s     Port: %lu", user->nick.c_str(), j, i->first.empty() ? "<all>" : i->first.c_str(), (unsigned long)i->second);
                        }
                        ServerInstance->Threads->Mutex(false);
                }
@@ -1249,14 +1248,14 @@ void ServerConfig::Read(bool bail, User* user)
                                        ServerInstance->SNO->WriteToSnoMask('A', "*** REHASH UNLOADED MODULE: %s",removing->c_str());
 
                                        if (user)
-                                               user->WriteNumeric(973, "%s %s :Module %s successfully unloaded.",user->nick, removing->c_str(), removing->c_str());
+                                               user->WriteNumeric(973, "%s %s :Module %s successfully unloaded.",user->nick.c_str(), removing->c_str(), removing->c_str());
 
                                        rem++;
                                }
                                else
                                {
                                        if (user)
-                                               user->WriteNumeric(972, "%s %s :Failed to unload module %s: %s",user->nick, removing->c_str(), removing->c_str(), ServerInstance->Modules->LastError().c_str());
+                                               user->WriteNumeric(972, "%s %s :Failed to unload module %s: %s",user->nick.c_str(), removing->c_str(), removing->c_str(), ServerInstance->Modules->LastError().c_str());
                                }
                        }
                }
@@ -1270,14 +1269,14 @@ void ServerConfig::Read(bool bail, User* user)
                                        ServerInstance->SNO->WriteToSnoMask('A', "*** REHASH LOADED MODULE: %s",adding->c_str());
 
                                        if (user)
-                                               user->WriteNumeric(975, "%s %s :Module %s successfully loaded.",user->nick, adding->c_str(), adding->c_str());
+                                               user->WriteNumeric(975, "%s %s :Module %s successfully loaded.",user->nick.c_str(), adding->c_str(), adding->c_str());
 
                                        add++;
                                }
                                else
                                {
                                        if (user)
-                                               user->WriteNumeric(974, "%s %s :Failed to load module %s: %s",user->nick, adding->c_str(), adding->c_str(), ServerInstance->Modules->LastError().c_str());
+                                               user->WriteNumeric(974, "%s %s :Failed to load module %s: %s",user->nick.c_str(), adding->c_str(), adding->c_str(), ServerInstance->Modules->LastError().c_str());
                                }
                        }
                }
@@ -1294,7 +1293,7 @@ void ServerConfig::Read(bool bail, User* user)
        ServerInstance->Threads->Mutex(false);
 
        if (user)
-               user->WriteServ("NOTICE %s :*** Successfully rehashed server.", user->nick);
+               user->WriteServ("NOTICE %s :*** Successfully rehashed server.", user->nick.c_str());
        else
                ServerInstance->SNO->WriteToSnoMask('A', "*** Successfully rehashed server.");