From 17ca73f1f204cd3e53f0200367a0eccef6efc380 Mon Sep 17 00:00:00 2001 From: brain Date: Thu, 2 Mar 2006 16:48:00 +0000 Subject: is_uline was an inefficient piece of crap - fixed. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@3428 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/commands.cpp | 14 ++------------ src/inspircd_io.cpp | 11 ++++++++++- src/modules/m_spanningtree.cpp | 4 ++-- 3 files changed, 14 insertions(+), 15 deletions(-) (limited to 'src') 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); -- cgit v1.2.3