]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/xline.cpp
Remove/Add cmode h according to <option:allowhalfop>. Fixes bug #715 reported by...
[user/henk/code/inspircd.git] / src / xline.cpp
index 22086375dd4333261f01dbc54aa00dd109df9314..da46c2eee44926beb4d05635349280b4d58ce1a7 100644 (file)
@@ -2,7 +2,7 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd: (C) 2002-2008 InspIRCd Development Team
+ *  InspIRCd: (C) 2002-2009 InspIRCd Development Team
  * See: http://www.inspircd.org/wiki/index.php/Credits
  *
  * This program is free but copyrighted software; see
@@ -261,20 +261,17 @@ XLine* XLineManager::MatchesLine(const std::string &type, User* user)
                safei = i;
                safei++;
 
+               if (i->second->duration && current > i->second->expiry)
+               {
+                       /* Expire the line, proceed to next one */
+                       ExpireLine(x, i);
+                       i = safei;
+                       continue;
+               }
+
                if (i->second->Matches(user))
                {
-                       if (i->second->duration && current > i->second->expiry)
-                       {
-                               /* Expire the line, return nothing */
-                               ExpireLine(x, i);
-                               /* Continue, there may be another that matches
-                                * (thanks aquanight)
-                                */
-                               i = safei;
-                               continue;
-                       }
-                       else
-                               return i->second;
+                       return i->second;
                }
 
                i = safei;
@@ -466,10 +463,10 @@ bool KLine::Matches(User *u)
        if (u->exempt)
                return false;
 
-       if (InspIRCd::Match(u->ident, this->identmask))
+       if (InspIRCd::Match(u->ident, this->identmask, ascii_case_insensitive_map))
        {
-               if (InspIRCd::MatchCIDR(u->host, this->hostmask) ||
-                   InspIRCd::MatchCIDR(u->GetIPString(), this->hostmask))
+               if (InspIRCd::MatchCIDR(u->host, this->hostmask, ascii_case_insensitive_map) ||
+                   InspIRCd::MatchCIDR(u->GetIPString(), this->hostmask, ascii_case_insensitive_map))
                {
                        return true;
                }
@@ -488,10 +485,10 @@ bool GLine::Matches(User *u)
        if (u->exempt)
                return false;
 
-       if (InspIRCd::Match(u->ident, this->identmask))
+       if (InspIRCd::Match(u->ident, this->identmask, ascii_case_insensitive_map))
        {
-               if (InspIRCd::MatchCIDR(u->host, this->hostmask) ||
-                   InspIRCd::MatchCIDR(u->GetIPString(), this->hostmask))
+               if (InspIRCd::MatchCIDR(u->host, this->hostmask, ascii_case_insensitive_map) ||
+                   InspIRCd::MatchCIDR(u->GetIPString(), this->hostmask, ascii_case_insensitive_map))
                {
                        return true;
                }
@@ -510,10 +507,10 @@ bool ELine::Matches(User *u)
        if (u->exempt)
                return false;
 
-       if (InspIRCd::Match(u->ident, this->identmask))
+       if (InspIRCd::Match(u->ident, this->identmask, ascii_case_insensitive_map))
        {
-               if (InspIRCd::MatchCIDR(u->host, this->hostmask) ||
-                   InspIRCd::MatchCIDR(u->GetIPString(), this->hostmask))
+               if (InspIRCd::MatchCIDR(u->host, this->hostmask, ascii_case_insensitive_map) ||
+                   InspIRCd::MatchCIDR(u->GetIPString(), this->hostmask, ascii_case_insensitive_map))
                {
                        return true;
                }
@@ -598,27 +595,27 @@ void ELine::OnAdd()
 
 void ELine::DisplayExpiry()
 {
-       ServerInstance->SNO->WriteToSnoMask('x',"Expiring timed E-Line %s@%s (set by %s %ld seconds ago)",this->identmask,this->hostmask,this->source,this->duration);
+       ServerInstance->SNO->WriteToSnoMask('x',"Removing expired E-Line %s@%s (set by %s %ld seconds ago)",this->identmask,this->hostmask,this->source,(long int)(ServerInstance->Time() - this->set_time));
 }
 
 void QLine::DisplayExpiry()
 {
-       ServerInstance->SNO->WriteToSnoMask('x',"Expiring timed Q-Line %s (set by %s %ld seconds ago)",this->nick,this->source,this->duration);
+       ServerInstance->SNO->WriteToSnoMask('x',"Removing expired Q-Line %s (set by %s %ld seconds ago)",this->nick,this->source,(long int)(ServerInstance->Time() - this->set_time));
 }
 
 void ZLine::DisplayExpiry()
 {
-       ServerInstance->SNO->WriteToSnoMask('x',"Expiring timed Z-Line %s (set by %s %ld seconds ago)",this->ipaddr,this->source,this->duration);
+       ServerInstance->SNO->WriteToSnoMask('x',"Removing expired Z-Line %s (set by %s %ld seconds ago)",this->ipaddr,this->source,(long int)(ServerInstance->Time() - this->set_time));
 }
 
 void KLine::DisplayExpiry()
 {
-       ServerInstance->SNO->WriteToSnoMask('x',"Expiring timed K-Line %s@%s (set by %s %ld seconds ago)",this->identmask,this->hostmask,this->source,this->duration);
+       ServerInstance->SNO->WriteToSnoMask('x',"Removing expired K-Line %s@%s (set by %s %ld seconds ago)",this->identmask,this->hostmask,this->source,(long int)(ServerInstance->Time() - this->set_time));
 }
 
 void GLine::DisplayExpiry()
 {
-       ServerInstance->SNO->WriteToSnoMask('x',"Expiring timed G-Line %s@%s (set by %s %ld seconds ago)",this->identmask,this->hostmask,this->source,this->duration);
+       ServerInstance->SNO->WriteToSnoMask('x',"Removing expired G-Line %s@%s (set by %s %ld seconds ago)",this->identmask,this->hostmask,this->source,(long int)(ServerInstance->Time() - this->set_time));
 }
 
 const char* ELine::Displayable()