diff options
-rw-r--r-- | src/commands.cpp | 2 | ||||
-rw-r--r-- | src/inspircd.cpp | 29 | ||||
-rw-r--r-- | src/modules.cpp | 15 | ||||
-rw-r--r-- | src/wildcard.cpp | 8 |
4 files changed, 28 insertions, 26 deletions
diff --git a/src/commands.cpp b/src/commands.cpp index f1614b772..8d1436f7a 100644 --- a/src/commands.cpp +++ b/src/commands.cpp @@ -940,6 +940,7 @@ void handle_quit(char **parameters, int pcnt, userrec *user) if (user->registered == 7) { purge_empty_chans(user); } + delete user; } void handle_who(char **parameters, int pcnt, userrec *user) @@ -2055,6 +2056,7 @@ void handle_Q(char token,char* params,serverrec* source,serverrec* reply, char* { purge_empty_chans(user); } + delete user; } } diff --git a/src/inspircd.cpp b/src/inspircd.cpp index 4fa04e3c0..c773ddc4d 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -2095,6 +2095,7 @@ void kill_link(userrec *user,const char* r) if (user->registered == 7) { purge_empty_chans(user); } + delete user; //user = NULL; } @@ -2146,6 +2147,7 @@ void kill_link_silent(userrec *user,const char* r) if (user->registered == 7) { purge_empty_chans(user); } + delete user; } @@ -3801,14 +3803,14 @@ int InspIRCd(void) fd_set serverfds; timeval tvs; - tvs.tv_usec = 7000L; + tvs.tv_usec = 10000L; tvs.tv_sec = 0; tv.tv_sec = 0; - tv.tv_usec = 7000L; + tv.tv_usec = 10000L; char data[10240]; timeval tval; fd_set sfd; - tval.tv_usec = 7000L; + tval.tv_usec = 10000L; tval.tv_sec = 0; int total_in_this_set = 0; int v = 0; @@ -3852,7 +3854,7 @@ int InspIRCd(void) // serverFds timevals went here - tvs.tv_usec = 7000L; + tvs.tv_usec = 30000L; tvs.tv_sec = 0; int servresult = select(32767, &serverfds, NULL, NULL, &tvs); if (servresult > 0) @@ -3879,7 +3881,7 @@ int InspIRCd(void) } } - for (int cycle = 0; cycle < 4; cycle++) for (int x = 0; x < UDPportCount; x++) + for (int x = 0; x < UDPportCount; x++) { std::deque<std::string> msgs; msgs.clear(); @@ -3992,7 +3994,7 @@ int InspIRCd(void) // tvals defined here - tval.tv_usec = 7000L; + tval.tv_usec = 1000L; selectResult2 = select(65535, &sfd, NULL, NULL, &tval); // now loop through all of the items in this pool if any are waiting @@ -4104,13 +4106,13 @@ int InspIRCd(void) } for (int q = 0; q < total_in_this_set; q++) { - // there is no iterator += operator :( - //if (count2 != clientlist.end()) - //{ - count2++; - //} + count2++; } } + +#ifdef _POSIX_PRIORITY_SCHEDULING + sched_yield(); +#endif // set up select call for (count = 0; count < boundPortCount; count++) @@ -4118,7 +4120,7 @@ int InspIRCd(void) FD_SET (openSockfd[count], &selectFds); } - tv.tv_usec = 7000L; + tv.tv_usec = 30000L; selectResult = select(MAXSOCKS, &selectFds, NULL, NULL, &tv); /* select is reporting a waiting socket. Poll them all to find out which */ @@ -4151,6 +4153,9 @@ int InspIRCd(void) } label: if (0) {}; +#ifdef _POSIX_PRIORITY_SCHEDULING + sched_yield(); +#endif } /* not reached */ close (incomingSockfd); diff --git a/src/modules.cpp b/src/modules.cpp index 2f45ad0d0..fd0f39503 100644 --- a/src/modules.cpp +++ b/src/modules.cpp @@ -453,18 +453,11 @@ chanuserlist Server::GetUsers(chanrec* chan) { chanuserlist userl; userl.clear(); - for (user_hash::const_iterator i = clientlist.begin(); i != clientlist.end(); i++) + std::vector<char*> *list = chan->GetUsers(); + for (std::vector<char*>::iterator i = list->begin(); i != list->end(); i++) { - if (i->second) - { - if (has_channel(i->second,chan)) - { - if (isnick(i->second->nick)) - { - userl.push_back(i->second); - } - } - } + char* o = *i; + userl.push_back((userrec*)o); } return userl; } diff --git a/src/wildcard.cpp b/src/wildcard.cpp index 123abc500..56df22368 100644 --- a/src/wildcard.cpp +++ b/src/wildcard.cpp @@ -47,13 +47,15 @@ int I,I2; if (MWC) return true; -if ((strstr(mask,"*")==0) && (strlen(literal) != strlen(mask))) +int lenliteral = strlen(literal); + +if ((strchr(mask,'*')==0) && (lenliteral != (strlen(mask)))) return 0; I=0; I2=0; while (I < strlen(mask)) { - if (I2 >= strlen(literal)) + if (I2 >= lenliteral) return 0; if ((mask[I]=='*') && (MWC==0)) @@ -87,7 +89,7 @@ if ((strstr(mask,"*")==0) && (strlen(literal) != strlen(mask))) I++; I2++; } - if (strlen(literal)==strlen(mask)) + if (lenliteral==strlen(mask)) MWC=2; } |