summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-09-19 18:12:43 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2006-09-19 18:12:43 +0000
commit066e5ca3665835e50dddaaf612212ffb94c68a85 (patch)
treeb9cc645618c28840efd999c715a280c1d8a4496f
parentc212eb49dfd808aae0a146cb978de2c5e9eb2490 (diff)
Fix crashes, and in the process make xline even faster!
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5304 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r--include/xline.h30
-rw-r--r--src/modules/m_spanningtree.cpp32
-rw-r--r--src/xline.cpp272
3 files changed, 172 insertions, 162 deletions
diff --git a/include/xline.h b/include/xline.h
index bec693da6..8c18ab37e 100644
--- a/include/xline.h
+++ b/include/xline.h
@@ -204,57 +204,57 @@ class XLineManager
/** This functor is used by the std::sort() function to keep glines in order
*/
- static bool GSortComparison ( const GLine one, const GLine two );
+ static bool GSortComparison ( const GLine* one, const GLine* two );
/** This functor is used by the std::sort() function to keep elines in order
*/
- static bool ESortComparison ( const ELine one, const ELine two );
+ static bool ESortComparison ( const ELine* one, const ELine* two );
/** This functor is used by the std::sort() function to keep zlines in order
*/
- static bool ZSortComparison ( const ZLine one, const ZLine two );
+ static bool ZSortComparison ( const ZLine* one, const ZLine* two );
/** This functor is used by the std::sort() function to keep klines in order
*/
- static bool KSortComparison ( const KLine one, const KLine two );
+ static bool KSortComparison ( const KLine* one, const KLine* two );
/** This functor is used by the std::sort() function to keep qlines in order
*/
- static bool QSortComparison ( const QLine one, const QLine two );
+ static bool QSortComparison ( const QLine* one, const QLine* two );
public:
/* Lists for temporary lines with an expiry time */
/** Temporary KLines */
- std::vector<KLine> klines;
+ std::vector<KLine*> klines;
/** Temporary Glines */
- std::vector<GLine> glines;
+ std::vector<GLine*> glines;
/** Temporary Zlines */
- std::vector<ZLine> zlines;
+ std::vector<ZLine*> zlines;
/** Temporary QLines */
- std::vector<QLine> qlines;
+ std::vector<QLine*> qlines;
/** Temporary ELines */
- std::vector<ELine> elines;
+ std::vector<ELine*> elines;
/* Seperate lists for perm XLines that isnt checked by expiry functions */
/** Permenant KLines */
- std::vector<KLine> pklines;
+ std::vector<KLine*> pklines;
/** Permenant GLines */
- std::vector<GLine> pglines;
+ std::vector<GLine*> pglines;
/** Permenant ZLines */
- std::vector<ZLine> pzlines;
+ std::vector<ZLine*> pzlines;
/** Permenant QLines */
- std::vector<QLine> pqlines;
+ std::vector<QLine*> pqlines;
/** Permenant ELines */
- std::vector<ELine> pelines;
+ std::vector<ELine*> pelines;
/** Constructor
* @param Instance A pointer to the creator object
diff --git a/src/modules/m_spanningtree.cpp b/src/modules/m_spanningtree.cpp
index 5b62697d7..8b410900a 100644
--- a/src/modules/m_spanningtree.cpp
+++ b/src/modules/m_spanningtree.cpp
@@ -1813,44 +1813,44 @@ class TreeSocket : public InspSocket
const char* sn = n.c_str();
int iterations = 0;
/* Yes, these arent too nice looking, but they get the job done */
- for (std::vector<ZLine>::iterator i = Instance->XLines->zlines.begin(); i != Instance->XLines->zlines.end(); i++, iterations++)
+ for (std::vector<ZLine*>::iterator i = Instance->XLines->zlines.begin(); i != Instance->XLines->zlines.end(); i++, iterations++)
{
- snprintf(data,MAXBUF,":%s ADDLINE Z %s %s %lu %lu :%s",sn,i->ipaddr,i->source,(unsigned long)i->set_time,(unsigned long)i->duration,i->reason);
+ snprintf(data,MAXBUF,":%s ADDLINE Z %s %s %lu %lu :%s",sn,(*i)->ipaddr,(*i)->source,(unsigned long)(*i)->set_time,(unsigned long)(*i)->duration,(*i)->reason);
this->WriteLine(data);
}
- for (std::vector<QLine>::iterator i = Instance->XLines->qlines.begin(); i != Instance->XLines->qlines.end(); i++, iterations++)
+ for (std::vector<QLine*>::iterator i = Instance->XLines->qlines.begin(); i != Instance->XLines->qlines.end(); i++, iterations++)
{
- snprintf(data,MAXBUF,":%s ADDLINE Q %s %s %lu %lu :%s",sn,i->nick,i->source,(unsigned long)i->set_time,(unsigned long)i->duration,i->reason);
+ snprintf(data,MAXBUF,":%s ADDLINE Q %s %s %lu %lu :%s",sn,(*i)->nick,(*i)->source,(unsigned long)(*i)->set_time,(unsigned long)(*i)->duration,(*i)->reason);
this->WriteLine(data);
}
- for (std::vector<GLine>::iterator i = Instance->XLines->glines.begin(); i != Instance->XLines->glines.end(); i++, iterations++)
+ for (std::vector<GLine*>::iterator i = Instance->XLines->glines.begin(); i != Instance->XLines->glines.end(); i++, iterations++)
{
- snprintf(data,MAXBUF,":%s ADDLINE G %s %s %lu %lu :%s",sn,i->hostmask,i->source,(unsigned long)i->set_time,(unsigned long)i->duration,i->reason);
+ snprintf(data,MAXBUF,":%s ADDLINE G %s %s %lu %lu :%s",sn,(*i)->hostmask,(*i)->source,(unsigned long)(*i)->set_time,(unsigned long)(*i)->duration,(*i)->reason);
this->WriteLine(data);
}
- for (std::vector<ELine>::iterator i = Instance->XLines->elines.begin(); i != Instance->XLines->elines.end(); i++, iterations++)
+ for (std::vector<ELine*>::iterator i = Instance->XLines->elines.begin(); i != Instance->XLines->elines.end(); i++, iterations++)
{
- snprintf(data,MAXBUF,":%s ADDLINE E %s %s %lu %lu :%s",sn,i->hostmask,i->source,(unsigned long)i->set_time,(unsigned long)i->duration,i->reason);
+ snprintf(data,MAXBUF,":%s ADDLINE E %s %s %lu %lu :%s",sn,(*i)->hostmask,(*i)->source,(unsigned long)(*i)->set_time,(unsigned long)(*i)->duration,(*i)->reason);
this->WriteLine(data);
}
- for (std::vector<ZLine>::iterator i = Instance->XLines->pzlines.begin(); i != Instance->XLines->pzlines.end(); i++, iterations++)
+ for (std::vector<ZLine*>::iterator i = Instance->XLines->pzlines.begin(); i != Instance->XLines->pzlines.end(); i++, iterations++)
{
- snprintf(data,MAXBUF,":%s ADDLINE Z %s %s %lu %lu :%s",sn,i->ipaddr,i->source,(unsigned long)i->set_time,(unsigned long)i->duration,i->reason);
+ snprintf(data,MAXBUF,":%s ADDLINE Z %s %s %lu %lu :%s",sn,(*i)->ipaddr,(*i)->source,(unsigned long)(*i)->set_time,(unsigned long)(*i)->duration,(*i)->reason);
this->WriteLine(data);
}
- for (std::vector<QLine>::iterator i = Instance->XLines->pqlines.begin(); i != Instance->XLines->pqlines.end(); i++, iterations++)
+ for (std::vector<QLine*>::iterator i = Instance->XLines->pqlines.begin(); i != Instance->XLines->pqlines.end(); i++, iterations++)
{
- snprintf(data,MAXBUF,":%s ADDLINE Q %s %s %lu %lu :%s",sn,i->nick,i->source,(unsigned long)i->set_time,(unsigned long)i->duration,i->reason);
+ snprintf(data,MAXBUF,":%s ADDLINE Q %s %s %lu %lu :%s",sn,(*i)->nick,(*i)->source,(unsigned long)(*i)->set_time,(unsigned long)(*i)->duration,(*i)->reason);
this->WriteLine(data);
}
- for (std::vector<GLine>::iterator i = Instance->XLines->pglines.begin(); i != Instance->XLines->pglines.end(); i++, iterations++)
+ for (std::vector<GLine*>::iterator i = Instance->XLines->pglines.begin(); i != Instance->XLines->pglines.end(); i++, iterations++)
{
- snprintf(data,MAXBUF,":%s ADDLINE G %s %s %lu %lu :%s",sn,i->hostmask,i->source,(unsigned long)i->set_time,(unsigned long)i->duration,i->reason);
+ snprintf(data,MAXBUF,":%s ADDLINE G %s %s %lu %lu :%s",sn,(*i)->hostmask,(*i)->source,(unsigned long)(*i)->set_time,(unsigned long)(*i)->duration,(*i)->reason);
this->WriteLine(data);
}
- for (std::vector<ELine>::iterator i = Instance->XLines->pelines.begin(); i != Instance->XLines->pelines.end(); i++, iterations++)
+ for (std::vector<ELine*>::iterator i = Instance->XLines->pelines.begin(); i != Instance->XLines->pelines.end(); i++, iterations++)
{
- snprintf(data,MAXBUF,":%s ADDLINE E %s %s %lu %lu :%s",sn,i->hostmask,i->source,(unsigned long)i->set_time,(unsigned long)i->duration,i->reason);
+ snprintf(data,MAXBUF,":%s ADDLINE E %s %s %lu %lu :%s",sn,(*i)->hostmask,(*i)->source,(unsigned long)(*i)->set_time,(unsigned long)(*i)->duration,(*i)->reason);
this->WriteLine(data);
}
}
diff --git a/src/xline.cpp b/src/xline.cpp
index eb00eaee0..7bb5ec1fb 100644
--- a/src/xline.cpp
+++ b/src/xline.cpp
@@ -121,7 +121,7 @@ bool XLineManager::add_gline(long duration, const char* source,const char* reaso
bool ret = del_gline(hostmask);
- GLine item(ServerInstance->Time(), duration, source, reason, ih.first.c_str(), ih.second.c_str());
+ GLine* item = new GLine(ServerInstance->Time(), duration, source, reason, ih.first.c_str(), ih.second.c_str());
if (duration)
{
@@ -144,7 +144,7 @@ bool XLineManager::add_eline(long duration, const char* source, const char* reas
bool ret = del_eline(hostmask);
- ELine item(ServerInstance->Time(), duration, source, reason, ih.first.c_str(), ih.second.c_str());
+ ELine* item = new ELine(ServerInstance->Time(), duration, source, reason, ih.first.c_str(), ih.second.c_str());
if (duration)
{
@@ -163,7 +163,7 @@ bool XLineManager::add_eline(long duration, const char* source, const char* reas
bool XLineManager::add_qline(long duration, const char* source, const char* reason, const char* nickname)
{
bool ret = del_qline(nickname);
- QLine item(ServerInstance->Time(), duration, source, reason, nickname);
+ QLine* item = new QLine(ServerInstance->Time(), duration, source, reason, nickname);
if (duration)
{
@@ -190,7 +190,7 @@ bool XLineManager::add_zline(long duration, const char* source, const char* reas
ipaddr++;
}
- ZLine item(ServerInstance->Time(), duration, source, reason, ipaddr);
+ ZLine* item = new ZLine(ServerInstance->Time(), duration, source, reason, ipaddr);
if (duration)
{
@@ -212,7 +212,7 @@ bool XLineManager::add_kline(long duration, const char* source, const char* reas
bool ret = del_kline(hostmask);
- KLine item(ServerInstance->Time(), duration, source, reason, ih.first.c_str(), ih.second.c_str());
+ KLine* item = new KLine(ServerInstance->Time(), duration, source, reason, ih.first.c_str(), ih.second.c_str());
if (duration)
{
@@ -231,18 +231,20 @@ bool XLineManager::add_kline(long duration, const char* source, const char* reas
bool XLineManager::del_gline(const char* hostmask)
{
IdentHostPair ih = IdentSplit(hostmask);
- for (std::vector<GLine>::iterator i = glines.begin(); i != glines.end(); i++)
+ for (std::vector<GLine*>::iterator i = glines.begin(); i != glines.end(); i++)
{
- if (!strcasecmp(ih.first.c_str(),i->identmask) && !strcasecmp(ih.second.c_str(),i->hostmask))
+ if (!strcasecmp(ih.first.c_str(),(*i)->identmask) && !strcasecmp(ih.second.c_str(),(*i)->hostmask))
{
+ delete *i;
glines.erase(i);
return true;
}
}
- for (std::vector<GLine>::iterator i = pglines.begin(); i != pglines.end(); i++)
+ for (std::vector<GLine*>::iterator i = pglines.begin(); i != pglines.end(); i++)
{
- if (!strcasecmp(ih.first.c_str(),i->identmask) && !strcasecmp(ih.second.c_str(),i->hostmask))
+ if (!strcasecmp(ih.first.c_str(),(*i)->identmask) && !strcasecmp(ih.second.c_str(),(*i)->hostmask))
{
+ delete *i;
pglines.erase(i);
return true;
}
@@ -255,18 +257,20 @@ bool XLineManager::del_gline(const char* hostmask)
bool XLineManager::del_eline(const char* hostmask)
{
IdentHostPair ih = IdentSplit(hostmask);
- for (std::vector<ELine>::iterator i = elines.begin(); i != elines.end(); i++)
+ for (std::vector<ELine*>::iterator i = elines.begin(); i != elines.end(); i++)
{
- if (!strcasecmp(ih.first.c_str(),i->identmask) && !strcasecmp(ih.second.c_str(),i->hostmask))
+ if (!strcasecmp(ih.first.c_str(),(*i)->identmask) && !strcasecmp(ih.second.c_str(),(*i)->hostmask))
{
+ delete *i;
elines.erase(i);
return true;
}
}
- for (std::vector<ELine>::iterator i = pelines.begin(); i != pelines.end(); i++)
+ for (std::vector<ELine*>::iterator i = pelines.begin(); i != pelines.end(); i++)
{
- if (!strcasecmp(ih.first.c_str(),i->identmask) && !strcasecmp(ih.second.c_str(),i->hostmask))
+ if (!strcasecmp(ih.first.c_str(),(*i)->identmask) && !strcasecmp(ih.second.c_str(),(*i)->hostmask))
{
+ delete *i;
pelines.erase(i);
return true;
}
@@ -278,18 +282,20 @@ bool XLineManager::del_eline(const char* hostmask)
bool XLineManager::del_qline(const char* nickname)
{
- for (std::vector<QLine>::iterator i = qlines.begin(); i != qlines.end(); i++)
+ for (std::vector<QLine*>::iterator i = qlines.begin(); i != qlines.end(); i++)
{
- if (!strcasecmp(nickname,i->nick))
+ if (!strcasecmp(nickname,(*i)->nick))
{
+ delete *i;
qlines.erase(i);
return true;
}
}
- for (std::vector<QLine>::iterator i = pqlines.begin(); i != pqlines.end(); i++)
+ for (std::vector<QLine*>::iterator i = pqlines.begin(); i != pqlines.end(); i++)
{
- if (!strcasecmp(nickname,i->nick))
+ if (!strcasecmp(nickname,(*i)->nick))
{
+ delete *i;
pqlines.erase(i);
return true;
}
@@ -301,18 +307,20 @@ bool XLineManager::del_qline(const char* nickname)
bool XLineManager::del_zline(const char* ipaddr)
{
- for (std::vector<ZLine>::iterator i = zlines.begin(); i != zlines.end(); i++)
+ for (std::vector<ZLine*>::iterator i = zlines.begin(); i != zlines.end(); i++)
{
- if (!strcasecmp(ipaddr,i->ipaddr))
+ if (!strcasecmp(ipaddr,(*i)->ipaddr))
{
+ delete *i;
zlines.erase(i);
return true;
}
}
- for (std::vector<ZLine>::iterator i = pzlines.begin(); i != pzlines.end(); i++)
+ for (std::vector<ZLine*>::iterator i = pzlines.begin(); i != pzlines.end(); i++)
{
- if (!strcasecmp(ipaddr,i->ipaddr))
+ if (!strcasecmp(ipaddr,(*i)->ipaddr))
{
+ delete *i;
pzlines.erase(i);
return true;
}
@@ -325,18 +333,20 @@ bool XLineManager::del_zline(const char* ipaddr)
bool XLineManager::del_kline(const char* hostmask)
{
IdentHostPair ih = IdentSplit(hostmask);
- for (std::vector<KLine>::iterator i = klines.begin(); i != klines.end(); i++)
+ for (std::vector<KLine*>::iterator i = klines.begin(); i != klines.end(); i++)
{
- if (!strcasecmp(ih.first.c_str(),i->identmask) && !strcasecmp(ih.second.c_str(),i->hostmask))
+ if (!strcasecmp(ih.first.c_str(),(*i)->identmask) && !strcasecmp(ih.second.c_str(),(*i)->hostmask))
{
+ delete *i;
klines.erase(i);
return true;
}
}
- for (std::vector<KLine>::iterator i = pklines.begin(); i != pklines.end(); i++)
+ for (std::vector<KLine*>::iterator i = pklines.begin(); i != pklines.end(); i++)
{
- if (!strcasecmp(ih.first.c_str(),i->identmask) && !strcasecmp(ih.second.c_str(),i->hostmask))
+ if (!strcasecmp(ih.first.c_str(),(*i)->identmask) && !strcasecmp(ih.second.c_str(),(*i)->hostmask))
{
+ delete *i;
pklines.erase(i);
return true;
}
@@ -350,12 +360,12 @@ char* XLineManager::matches_qline(const char* nick)
{
if ((qlines.empty()) && (pqlines.empty()))
return NULL;
- for (std::vector<QLine>::iterator i = qlines.begin(); i != qlines.end(); i++)
- if (match(nick,i->nick))
- return i->reason;
- for (std::vector<QLine>::iterator i = pqlines.begin(); i != pqlines.end(); i++)
- if (match(nick,i->nick))
- return i->reason;
+ for (std::vector<QLine*>::iterator i = qlines.begin(); i != qlines.end(); i++)
+ if (match(nick,(*i)->nick))
+ return (*i)->reason;
+ for (std::vector<QLine*>::iterator i = pqlines.begin(); i != pqlines.end(); i++)
+ if (match(nick,(*i)->nick))
+ return (*i)->reason;
return NULL;
}
@@ -365,23 +375,23 @@ char* XLineManager::matches_gline(userrec* user)
{
if ((glines.empty()) && (pglines.empty()))
return NULL;
- for (std::vector<GLine>::iterator i = glines.begin(); i != glines.end(); i++)
+ for (std::vector<GLine*>::iterator i = glines.begin(); i != glines.end(); i++)
{
- if ((match(user->ident,i->identmask)))
+ if ((match(user->ident,(*i)->identmask)))
{
- if ((match(user->host,i->hostmask, true)) || (match(user->GetIPString(),i->hostmask, true)))
+ if ((match(user->host,(*i)->hostmask, true)) || (match(user->GetIPString(),(*i)->hostmask, true)))
{
- return i->reason;
+ return (*i)->reason;
}
}
}
- for (std::vector<GLine>::iterator i = pglines.begin(); i != pglines.end(); i++)
+ for (std::vector<GLine*>::iterator i = pglines.begin(); i != pglines.end(); i++)
{
- if ((match(user->ident,i->identmask)))
+ if ((match(user->ident,(*i)->identmask)))
{
- if ((match(user->host,i->hostmask, true)) || (match(user->GetIPString(),i->hostmask, true)))
+ if ((match(user->host,(*i)->hostmask, true)) || (match(user->GetIPString(),(*i)->hostmask, true)))
{
- return i->reason;
+ return (*i)->reason;
}
}
}
@@ -394,23 +404,23 @@ char* XLineManager::matches_exception(userrec* user)
return NULL;
char host2[MAXBUF];
snprintf(host2,MAXBUF,"*@%s",user->host);
- for (std::vector<ELine>::iterator i = elines.begin(); i != elines.end(); i++)
+ for (std::vector<ELine*>::iterator i = elines.begin(); i != elines.end(); i++)
{
- if ((match(user->ident,i->identmask)))
+ if ((match(user->ident,(*i)->identmask)))
{
- if ((match(user->host,i->hostmask, true)) || (match(user->GetIPString(),i->hostmask, true)))
+ if ((match(user->host,(*i)->hostmask, true)) || (match(user->GetIPString(),(*i)->hostmask, true)))
{
- return i->reason;
+ return (*i)->reason;
}
}
}
- for (std::vector<ELine>::iterator i = pelines.begin(); i != pelines.end(); i++)
+ for (std::vector<ELine*>::iterator i = pelines.begin(); i != pelines.end(); i++)
{
- if ((match(user->ident,i->identmask)))
+ if ((match(user->ident,(*i)->identmask)))
{
- if ((match(user->host,i->hostmask, true)) || (match(user->GetIPString(),i->hostmask, true)))
+ if ((match(user->host,(*i)->hostmask, true)) || (match(user->GetIPString(),(*i)->hostmask, true)))
{
- return i->reason;
+ return (*i)->reason;
}
}
}
@@ -420,19 +430,19 @@ char* XLineManager::matches_exception(userrec* user)
void XLineManager::gline_set_creation_time(const char* host, time_t create_time)
{
- for (std::vector<GLine>::iterator i = glines.begin(); i != glines.end(); i++)
+ for (std::vector<GLine*>::iterator i = glines.begin(); i != glines.end(); i++)
{
- if (!strcasecmp(host,i->hostmask))
+ if (!strcasecmp(host,(*i)->hostmask))
{
- i->set_time = create_time;
+ (*i)->set_time = create_time;
return;
}
}
- for (std::vector<GLine>::iterator i = pglines.begin(); i != pglines.end(); i++)
+ for (std::vector<GLine*>::iterator i = pglines.begin(); i != pglines.end(); i++)
{
- if (!strcasecmp(host,i->hostmask))
+ if (!strcasecmp(host,(*i)->hostmask))
{
- i->set_time = create_time;
+ (*i)->set_time = create_time;
return;
}
}
@@ -441,19 +451,19 @@ void XLineManager::gline_set_creation_time(const char* host, time_t create_time)
void XLineManager::eline_set_creation_time(const char* host, time_t create_time)
{
- for (std::vector<ELine>::iterator i = elines.begin(); i != elines.end(); i++)
+ for (std::vector<ELine*>::iterator i = elines.begin(); i != elines.end(); i++)
{
- if (!strcasecmp(host,i->hostmask))
+ if (!strcasecmp(host,(*i)->hostmask))
{
- i->set_time = create_time;
+ (*i)->set_time = create_time;
return;
}
}
- for (std::vector<ELine>::iterator i = pelines.begin(); i != pelines.end(); i++)
+ for (std::vector<ELine*>::iterator i = pelines.begin(); i != pelines.end(); i++)
{
- if (!strcasecmp(host,i->hostmask))
+ if (!strcasecmp(host,(*i)->hostmask))
{
- i->set_time = create_time;
+ (*i)->set_time = create_time;
return;
}
}
@@ -462,19 +472,19 @@ void XLineManager::eline_set_creation_time(const char* host, time_t create_time)
void XLineManager::qline_set_creation_time(const char* nick, time_t create_time)
{
- for (std::vector<QLine>::iterator i = qlines.begin(); i != qlines.end(); i++)
+ for (std::vector<QLine*>::iterator i = qlines.begin(); i != qlines.end(); i++)
{
- if (!strcasecmp(nick,i->nick))
+ if (!strcasecmp(nick,(*i)->nick))
{
- i->set_time = create_time;
+ (*i)->set_time = create_time;
return;
}
}
- for (std::vector<QLine>::iterator i = pqlines.begin(); i != pqlines.end(); i++)
+ for (std::vector<QLine*>::iterator i = pqlines.begin(); i != pqlines.end(); i++)
{
- if (!strcasecmp(nick,i->nick))
+ if (!strcasecmp(nick,(*i)->nick))
{
- i->set_time = create_time;
+ (*i)->set_time = create_time;
return;
}
}
@@ -483,19 +493,19 @@ void XLineManager::qline_set_creation_time(const char* nick, time_t create_time)
void XLineManager::zline_set_creation_time(const char* ip, time_t create_time)
{
- for (std::vector<ZLine>::iterator i = zlines.begin(); i != zlines.end(); i++)
+ for (std::vector<ZLine*>::iterator i = zlines.begin(); i != zlines.end(); i++)
{
- if (!strcasecmp(ip,i->ipaddr))
+ if (!strcasecmp(ip,(*i)->ipaddr))
{
- i->set_time = create_time;
+ (*i)->set_time = create_time;
return;
}
}
- for (std::vector<ZLine>::iterator i = pzlines.begin(); i != pzlines.end(); i++)
+ for (std::vector<ZLine*>::iterator i = pzlines.begin(); i != pzlines.end(); i++)
{
- if (!strcasecmp(ip,i->ipaddr))
+ if (!strcasecmp(ip,(*i)->ipaddr))
{
- i->set_time = create_time;
+ (*i)->set_time = create_time;
return;
}
}
@@ -508,12 +518,12 @@ char* XLineManager::matches_zline(const char* ipaddr)
{
if ((zlines.empty()) && (pzlines.empty()))
return NULL;
- for (std::vector<ZLine>::iterator i = zlines.begin(); i != zlines.end(); i++)
- if (match(ipaddr,i->ipaddr, true))
- return i->reason;
- for (std::vector<ZLine>::iterator i = pzlines.begin(); i != pzlines.end(); i++)
- if (match(ipaddr,i->ipaddr, true))
- return i->reason;
+ for (std::vector<ZLine*>::iterator i = zlines.begin(); i != zlines.end(); i++)
+ if (match(ipaddr,(*i)->ipaddr, true))
+ return (*i)->reason;
+ for (std::vector<ZLine*>::iterator i = pzlines.begin(); i != pzlines.end(); i++)
+ if (match(ipaddr,(*i)->ipaddr, true))
+ return (*i)->reason;
return NULL;
}
@@ -523,52 +533,52 @@ char* XLineManager::matches_kline(userrec* user)
{
if ((klines.empty()) && (pklines.empty()))
return NULL;
- for (std::vector<KLine>::iterator i = klines.begin(); i != klines.end(); i++)
+ for (std::vector<KLine*>::iterator i = klines.begin(); i != klines.end(); i++)
{
- if ((match(user->ident,i->identmask)))
+ if ((match(user->ident,(*i)->identmask)))
{
- if ((match(user->host,i->hostmask, true)) || (match(user->GetIPString(),i->hostmask, true)))
+ if ((match(user->host,(*i)->hostmask, true)) || (match(user->GetIPString(),(*i)->hostmask, true)))
{
- return i->reason;
+ return (*i)->reason;
}
}
}
- for (std::vector<KLine>::iterator i = pklines.begin(); i != pklines.end(); i++)
+ for (std::vector<KLine*>::iterator i = pklines.begin(); i != pklines.end(); i++)
{
- if ((match(user->ident,i->identmask)))
+ if ((match(user->ident,(*i)->identmask)))
{
- if ((match(user->host,i->hostmask, true)) || (match(user->GetIPString(),i->hostmask, true)))
+ if ((match(user->host,(*i)->hostmask, true)) || (match(user->GetIPString(),(*i)->hostmask, true)))
{
- return i->reason;
+ return (*i)->reason;
}
}
}
return NULL;
}
-bool XLineManager::GSortComparison ( const GLine one, const GLine two )
+bool XLineManager::GSortComparison ( const GLine* one, const GLine* two )
{
- return (one.duration + one.set_time) < (two.duration + two.set_time);
+ return (one->duration + one->set_time) < (two->duration + two->set_time);
}
-bool XLineManager::ESortComparison ( const ELine one, const ELine two )
+bool XLineManager::ESortComparison ( const ELine* one, const ELine* two )
{
- return (one.duration + one.set_time) < (two.duration + two.set_time);
+ return (one->duration + one->set_time) < (two->duration + two->set_time);
}
-bool XLineManager::ZSortComparison ( const ZLine one, const ZLine two )
+bool XLineManager::ZSortComparison ( const ZLine* one, const ZLine* two )
{
- return (one.duration + one.set_time) < (two.duration + two.set_time);
+ return (one->duration + one->set_time) < (two->duration + two->set_time);
}
-bool XLineManager::KSortComparison ( const KLine one, const KLine two )
+bool XLineManager::KSortComparison ( const KLine* one, const KLine* two )
{
- return (one.duration + one.set_time) < (two.duration + two.set_time);
+ return (one->duration + one->set_time) < (two->duration + two->set_time);
}
-bool XLineManager::QSortComparison ( const QLine one, const QLine two )
+bool XLineManager::QSortComparison ( const QLine* one, const QLine* two )
{
- return (one.duration + one.set_time) < (two.duration + two.set_time);
+ return (one->duration + one->set_time) < (two->duration + two->set_time);
}
// removes lines that have expired
@@ -577,43 +587,43 @@ void XLineManager::expire_lines()
{
time_t current = ServerInstance->Time();
- /* Because we now store all our XLines in sorted order using (i->duration + i->set_time) as a key, this
+ /* Because we now store all our XLines in sorted order using ((*i)->duration + (*i)->set_time) as a key, this
* means that to expire the XLines we just need to do a while, picking off the top few until there are
* none left at the head of the queue that are after the current time.
*/
- while ((glines.size()) && (current > (glines.begin()->duration + glines.begin()->set_time)))
+ while ((glines.size()) && (current > ((*glines.begin())->duration + (*glines.begin())->set_time)))
{
- std::vector<GLine>::iterator i = glines.begin();
- ServerInstance->SNO->WriteToSnoMask('x',"Expiring timed G-Line %s (set by %s %d seconds ago)",i->hostmask,i->source,i->duration);
+ std::vector<GLine*>::iterator i = glines.begin();
+ ServerInstance->SNO->WriteToSnoMask('x',"Expiring timed G-Line %s (set by %s %d seconds ago)",(*i)->hostmask,(*i)->source,(*i)->duration);
glines.erase(i);
}
- while ((elines.size()) && (current > (elines.begin()->duration + elines.begin()->set_time)))
+ while ((elines.size()) && (current > ((*elines.begin())->duration + (*elines.begin())->set_time)))
{
- std::vector<ELine>::iterator i = elines.begin();
- ServerInstance->SNO->WriteToSnoMask('x',"Expiring timed E-Line %s (set by %s %d seconds ago)",i->hostmask,i->source,i->duration);
+ std::vector<ELine*>::iterator i = elines.begin();
+ ServerInstance->SNO->WriteToSnoMask('x',"Expiring timed E-Line %s (set by %s %d seconds ago)",(*i)->hostmask,(*i)->source,(*i)->duration);
elines.erase(i);
}
- while ((zlines.size()) && (current > (zlines.begin()->duration + zlines.begin()->set_time)))
+ while ((zlines.size()) && (current > ((*zlines.begin())->duration + (*zlines.begin())->set_time)))
{
- std::vector<ZLine>::iterator i = zlines.begin();
- ServerInstance->SNO->WriteToSnoMask('x',"Expiring timed Z-Line %s (set by %s %d seconds ago)",i->ipaddr,i->source,i->duration);
+ std::vector<ZLine*>::iterator i = zlines.begin();
+ ServerInstance->SNO->WriteToSnoMask('x',"Expiring timed Z-Line %s (set by %s %d seconds ago)",(*i)->ipaddr,(*i)->source,(*i)->duration);
zlines.erase(i);
}
- while ((klines.size()) && (current > (klines.begin()->duration + klines.begin()->set_time)))
+ while ((klines.size()) && (current > ((*klines.begin())->duration + (*klines.begin())->set_time)))
{
- std::vector<KLine>::iterator i = klines.begin();
- ServerInstance->SNO->WriteToSnoMask('x',"Expiring timed K-Line %s (set by %s %d seconds ago)",i->hostmask,i->source,i->duration);
+ std::vector<KLine*>::iterator i = klines.begin();
+ ServerInstance->SNO->WriteToSnoMask('x',"Expiring timed K-Line %s (set by %s %d seconds ago)",(*i)->hostmask,(*i)->source,(*i)->duration);
klines.erase(i);
}
- while ((qlines.size()) && (current > (qlines.begin()->duration + qlines.begin()->set_time)))
+ while ((qlines.size()) && (current > ((*qlines.begin())->duration + (*qlines.begin())->set_time)))
{
- std::vector<QLine>::iterator i = qlines.begin();
- ServerInstance->SNO->WriteToSnoMask('x',"Expiring timed Q-Line %s (set by %s %d seconds ago)",i->nick,i->source,i->duration);
+ std::vector<QLine*>::iterator i = qlines.begin();
+ ServerInstance->SNO->WriteToSnoMask('x',"Expiring timed Q-Line %s (set by %s %d seconds ago)",(*i)->nick,(*i)->source,(*i)->duration);
qlines.erase(i);
}
@@ -682,46 +692,46 @@ void XLineManager::apply_lines(const int What)
void XLineManager::stats_k(userrec* user, string_list &results)
{
std::string sn = ServerInstance->Config->ServerName;
- for (std::vector<KLine>::iterator i = klines.begin(); i != klines.end(); i++)
- results.push_back(sn+" 216 "+user->nick+" :"+i->identmask+"@"+i->hostmask+" "+ConvToStr(i->set_time)+" "+ConvToStr(i->duration)+" "+i->source+" :"+i->reason);
- for (std::vector<KLine>::iterator i = pklines.begin(); i != pklines.end(); i++)
- results.push_back(sn+" 216 "+user->nick+" :"+i->identmask+"@"+i->hostmask+" "+ConvToStr(i->set_time)+" "+ConvToStr(i->duration)+" "+i->source+" :"+i->reason);
+ for (std::vector<KLine*>::iterator i = klines.begin(); i != klines.end(); i++)
+ results.push_back(sn+" 216 "+user->nick+" :"+(*i)->identmask+"@"+(*i)->hostmask+" "+ConvToStr((*i)->set_time)+" "+ConvToStr((*i)->duration)+" "+(*i)->source+" :"+(*i)->reason);
+ for (std::vector<KLine*>::iterator i = pklines.begin(); i != pklines.end(); i++)
+ results.push_back(sn+" 216 "+user->nick+" :"+(*i)->identmask+"@"+(*i)->hostmask+" "+ConvToStr((*i)->set_time)+" "+ConvToStr((*i)->duration)+" "+(*i)->source+" :"+(*i)->reason);
}
void XLineManager::stats_g(userrec* user, string_list &results)
{
std::string sn = ServerInstance->Config->ServerName;
- for (std::vector<GLine>::iterator i = glines.begin(); i != glines.end(); i++)
- results.push_back(sn+" 223 "+user->nick+" :"+i->identmask+"@"+i->hostmask+" "+ConvToStr(i->set_time)+" "+ConvToStr(i->duration)+" "+i->source+" :"+i->reason);
- for (std::vector<GLine>::iterator i = pglines.begin(); i != pglines.end(); i++)
- results.push_back(sn+" 223 "+user->nick+" :"+i->identmask+"@"+i->hostmask+" "+ConvToStr(i->set_time)+" "+ConvToStr(i->duration)+" "+i->source+" :"+i->reason);
+ for (std::vector<GLine*>::iterator i = glines.begin(); i != glines.end(); i++)
+ results.push_back(sn+" 223 "+user->nick+" :"+(*i)->identmask+"@"+(*i)->hostmask+" "+ConvToStr((*i)->set_time)+" "+ConvToStr((*i)->duration)+" "+(*i)->source+" :"+(*i)->reason);
+ for (std::vector<GLine*>::iterator i = pglines.begin(); i != pglines.end(); i++)
+ results.push_back(sn+" 223 "+user->nick+" :"+(*i)->identmask+"@"+(*i)->hostmask+" "+ConvToStr((*i)->set_time)+" "+ConvToStr((*i)->duration)+" "+(*i)->source+" :"+(*i)->reason);
}
void XLineManager::stats_q(userrec* user, string_list &results)
{
std::string sn = ServerInstance->Config->ServerName;
- for (std::vector<QLine>::iterator i = qlines.begin(); i != qlines.end(); i++)
- results.push_back(sn+" 217 "+user->nick+" :"+i->nick+" "+ConvToStr(i->set_time)+" "+ConvToStr(i->duration)+" "+i->source+" :"+i->reason);
- for (std::vector<QLine>::iterator i = pqlines.begin(); i != pqlines.end(); i++)
- results.push_back(sn+" 217 "+user->nick+" :"+i->nick+" "+ConvToStr(i->set_time)+" "+ConvToStr(i->duration)+" "+i->source+" :"+i->reason);
+ for (std::vector<QLine*>::iterator i = qlines.begin(); i != qlines.end(); i++)
+ results.push_back(sn+" 217 "+user->nick+" :"+(*i)->nick+" "+ConvToStr((*i)->set_time)+" "+ConvToStr((*i)->duration)+" "+(*i)->source+" :"+(*i)->reason);
+ for (std::vector<QLine*>::iterator i = pqlines.begin(); i != pqlines.end(); i++)
+ results.push_back(sn+" 217 "+user->nick+" :"+(*i)->nick+" "+ConvToStr((*i)->set_time)+" "+ConvToStr((*i)->duration)+" "+(*i)->source+" :"+(*i)->reason);
}
void XLineManager::stats_z(userrec* user, string_list &results)
{
std::string sn = ServerInstance->Config->ServerName;
- for (std::vector<ZLine>::iterator i = zlines.begin(); i != zlines.end(); i++)
- results.push_back(sn+" 223 "+user->nick+" :"+i->ipaddr+" "+ConvToStr(i->set_time)+" "+ConvToStr(i->duration)+" "+i->source+" :"+i->reason);
- for (std::vector<ZLine>::iterator i = pzlines.begin(); i != pzlines.end(); i++)
- results.push_back(sn+" 223 "+user->nick+" :"+i->ipaddr+" "+ConvToStr(i->set_time)+" "+ConvToStr(i->duration)+" "+i->source+" :"+i->reason);
+ for (std::vector<ZLine*>::iterator i = zlines.begin(); i != zlines.end(); i++)
+ results.push_back(sn+" 223 "+user->nick+" :"+(*i)->ipaddr+" "+ConvToStr((*i)->set_time)+" "+ConvToStr((*i)->duration)+" "+(*i)->source+" :"+(*i)->reason);
+ for (std::vector<ZLine*>::iterator i = pzlines.begin(); i != pzlines.end(); i++)
+ results.push_back(sn+" 223 "+user->nick+" :"+(*i)->ipaddr+" "+ConvToStr((*i)->set_time)+" "+ConvToStr((*i)->duration)+" "+(*i)->source+" :"+(*i)->reason);
}
void XLineManager::stats_e(userrec* user, string_list &results)
{
std::string sn = ServerInstance->Config->ServerName;
- for (std::vector<ELine>::iterator i = elines.begin(); i != elines.end(); i++)
- results.push_back(sn+" 223 "+user->nick+" :"+i->identmask+"@"+i->hostmask+" "+ConvToStr(i->set_time)+" "+ConvToStr(i->duration)+" "+i->source+" :"+i->reason);
- for (std::vector<ELine>::iterator i = pelines.begin(); i != pelines.end(); i++)
- results.push_back(sn+" 223 "+user->nick+" :"+i->identmask+"@"+i->hostmask+" "+ConvToStr(i->set_time)+" "+ConvToStr(i->duration)+" "+i->source+" :"+i->reason);
+ for (std::vector<ELine*>::iterator i = elines.begin(); i != elines.end(); i++)
+ results.push_back(sn+" 223 "+user->nick+" :"+(*i)->identmask+"@"+(*i)->hostmask+" "+ConvToStr((*i)->set_time)+" "+ConvToStr((*i)->duration)+" "+(*i)->source+" :"+(*i)->reason);
+ for (std::vector<ELine*>::iterator i = pelines.begin(); i != pelines.end(); i++)
+ results.push_back(sn+" 223 "+user->nick+" :"+(*i)->identmask+"@"+(*i)->hostmask+" "+ConvToStr((*i)->set_time)+" "+ConvToStr((*i)->duration)+" "+(*i)->source+" :"+(*i)->reason);
}
XLineManager::XLineManager(InspIRCd* Instance) : ServerInstance(Instance)