diff options
-rw-r--r-- | include/inspircd_io.h | 2 | ||||
-rw-r--r-- | src/commands.cpp | 14 | ||||
-rw-r--r-- | src/inspircd_io.cpp | 11 | ||||
-rw-r--r-- | src/modules/m_spanningtree.cpp | 4 |
4 files changed, 16 insertions, 15 deletions
diff --git a/include/inspircd_io.h b/include/inspircd_io.h index 6ddb9983e..6d9085786 100644 --- a/include/inspircd_io.h +++ b/include/inspircd_io.h @@ -308,6 +308,8 @@ class ServerConfig : public classbase */ char CustomVersion[MAXBUF]; + std::vector<irc::string> ulines; + ServerConfig(); /** Clears the include stack in preperation for diff --git a/src/commands.cpp b/src/commands.cpp index 048a5fae7..9bf4883f9 100644 --- a/src/commands.cpp +++ b/src/commands.cpp @@ -177,22 +177,12 @@ void do_whois(userrec* user, userrec* dest,unsigned long signon, unsigned long i /* XXX - these really belong in helperfuncs perhaps -- w00t */ bool is_uline(const char* server) { - char ServName[MAXBUF]; - if (!server) return false; - if (!(*server)) + if (!*server) return true; - for (int i = 0; i < Config->ConfValueEnum("uline",&Config->config_f); i++) - { - Config->ConfValue("uline","server",i,ServName,&Config->config_f); - if (!strcasecmp(server,ServName)) - { - return true; - } - } - return false; + return (find(Config->ulines.begin(),Config->ulines.end(),server) != Config->ulines.end()); } int operstrcmp(char* data,char* input) diff --git a/src/inspircd_io.cpp b/src/inspircd_io.cpp index c9d64d57c..5488b025f 100644 --- a/src/inspircd_io.cpp +++ b/src/inspircd_io.cpp @@ -157,7 +157,7 @@ void ServerConfig::Read(bool bail, userrec* user) */ char dbg[MAXBUF],pauseval[MAXBUF],Value[MAXBUF],timeout[MAXBUF],NB[MAXBUF],flood[MAXBUF],MW[MAXBUF],MCON[MAXBUF],MT[MAXBUF]; char AH[MAXBUF],AP[MAXBUF],AF[MAXBUF],DNT[MAXBUF],pfreq[MAXBUF],thold[MAXBUF],sqmax[MAXBUF],rqmax[MAXBUF],SLIMT[MAXBUF]; - char localmax[MAXBUF],globalmax[MAXBUF],HS[MAXBUF],HB[MAXBUF]; + char localmax[MAXBUF],globalmax[MAXBUF],HS[MAXBUF],HB[MAXBUF],ServName[MAXBUF]; ConnectClass c; std::stringstream errstr; include_stack.clear(); @@ -408,6 +408,15 @@ void ServerConfig::Read(bool bail, userrec* user) } } + Config->ulines.clear(); + for (int i = 0; i < ConfValueEnum("uline",&Config->config_f); i++) + { + ConfValue("uline","server",i,ServName,&Config->config_f); + { + log(DEBUG,"Read ULINE '%s'",ServName); + Config->ulines.push_back(ServName); + } + } log(DEFAULT,"Reading K lines,Q lines and Z lines from config..."); read_xline_defaults(); log(DEFAULT,"Applying K lines, Q lines and Z lines..."); diff --git a/src/modules/m_spanningtree.cpp b/src/modules/m_spanningtree.cpp index 01cf39757..966cb3f1d 100644 --- a/src/modules/m_spanningtree.cpp +++ b/src/modules/m_spanningtree.cpp @@ -1094,8 +1094,8 @@ class TreeSocket : public InspSocket clientlist[tempnick] = new userrec(); clientlist[tempnick]->fd = FD_MAGIC_NUMBER; strlcpy(clientlist[tempnick]->nick, tempnick,NICKMAX-1); - strlcpy(clientlist[tempnick]->host, params[2].c_str(),160); - strlcpy(clientlist[tempnick]->dhost, params[3].c_str(),160); + strlcpy(clientlist[tempnick]->host, params[2].c_str(),63); + strlcpy(clientlist[tempnick]->dhost, params[3].c_str(),63); clientlist[tempnick]->server = (char*)FindServerNamePtr(source.c_str()); strlcpy(clientlist[tempnick]->ident, params[4].c_str(),IDENTMAX); strlcpy(clientlist[tempnick]->fullname, params[7].c_str(),MAXGECOS); |