summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/modules/m_filter.cpp10
-rw-r--r--src/wildcard.cpp11
2 files changed, 15 insertions, 6 deletions
diff --git a/src/modules/m_filter.cpp b/src/modules/m_filter.cpp
index 569ed0637..054d77963 100644
--- a/src/modules/m_filter.cpp
+++ b/src/modules/m_filter.cpp
@@ -26,8 +26,6 @@
/* $ModDesc: An enhanced version of the unreal m_filter.so used by chatspike.net */
-
-
class ModuleFilter : public Module
{
Server *Srv;
@@ -65,11 +63,11 @@ class ModuleFilter : public Module
virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text)
{
- std::string text2 = text + " ";
+ std::string text2 = text+" ";
for (int index = 0; index < MyConf->Enumerate("keyword"); index++)
{
std::string pattern = MyConf->ReadValue("keyword","pattern",index);
- if (Srv->MatchText(text2,pattern))
+ if ((Srv->MatchText(text2,pattern)) || (Srv->MatchText(text,pattern)))
{
std::string target = "";
std::string reason = MyConf->ReadValue("keyword","reason",index);
@@ -114,11 +112,11 @@ class ModuleFilter : public Module
virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text)
{
- std::string text2 = text + " ";
+ std::string text2 = text+" ";
for (int index = 0; index < MyConf->Enumerate("keyword"); index++)
{
std::string pattern = MyConf->ReadValue("keyword","pattern",index);
- if (Srv->MatchText(text2,pattern))
+ if ((Srv->MatchText(text2,pattern)) || (Srv->MatchText(text,pattern)))
{
std::string target = "";
std::string reason = MyConf->ReadValue("keyword","reason",index);
diff --git a/src/wildcard.cpp b/src/wildcard.cpp
index 8b4190539..47fbaf002 100644
--- a/src/wildcard.cpp
+++ b/src/wildcard.cpp
@@ -101,6 +101,17 @@ bool match(const char* literal, const char* mask)
strlcpy(M,mask,10240);
strlower(L);
strlower(M);
+ // short circuit literals
+ log(DEBUG,"Match '%s' to '%s'",L,M);
+ if ((!strchr(M,'*')) && (!strchr(M,'?')))
+ {
+ log(DEBUG,"Short circuiting literal");
+ if (!strcasecmp(L,M))
+ {
+ log(DEBUG,"Literal match");
+ return true;
+ }
+ }
match2(L,M);
return (MWC == 2);
}