]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/helperfuncs.cpp
Inspire -> InspIRCd
[user/henk/code/inspircd.git] / src / helperfuncs.cpp
index 20dd6cb1361ca1ccef1867cbc0e87695cf75207c..e3e3db023b5919ad3ad1de6f1c56286e6bb7b6cf 100644 (file)
@@ -125,7 +125,7 @@ void readfile(file_cache &F, const char* fname)
 
 void Write_NoFormat(int sock, const char *text)
 {
-       if ((sock < 0) || (!text))
+       if ((sock < 0) || (!text) || (sock > MAX_DESCRIPTORS))
                return;
 
        char tb[MAXBUF];
@@ -148,7 +148,7 @@ void Write_NoFormat(int sock, const char *text)
 
 void Write(int sock,char *text, ...)
 {
-        if (sock < 0)
+        if ((sock < 0) || (sock > MAX_DESCRIPTORS))
                 return;
         if (!text)
         {
@@ -179,7 +179,7 @@ void Write(int sock,char *text, ...)
 
 void WriteServ_NoFormat(int sock, const char* text)
 {
-       if ((sock < 0) || (!text))
+       if ((sock < 0) || (!text) || (sock > MAX_DESCRIPTORS))
                return;
        char tb[MAXBUF];
        int bytes = snprintf(tb,MAXBUF,":%s %s\r\n",Config->ServerName,text);
@@ -203,7 +203,7 @@ void WriteServ_NoFormat(int sock, const char* text)
 
 void WriteServ(int sock, char* text, ...)
 {
-        if (sock < 0)
+        if ((sock < 0) || (sock > MAX_DESCRIPTORS))
                 return;
         if (!text)
         {
@@ -234,7 +234,7 @@ void WriteServ(int sock, char* text, ...)
 
 void WriteFrom_NoFormat(int sock, userrec *user, const char* text)
 {
-       if ((sock < 0) || (!text) || (!user))
+       if ((sock < 0) || (!text) || (!user) || (sock > MAX_DESCRIPTORS))
                return;
        char tb[MAXBUF];
        int bytes = snprintf(tb,MAXBUF,":%s %s\r\n",user->GetFullHost(),text);
@@ -258,7 +258,7 @@ void WriteFrom_NoFormat(int sock, userrec *user, const char* text)
 
 void WriteFrom(int sock, userrec *user,char* text, ...)
 {
-        if (sock < 0)
+        if ((sock < 0) || (sock > MAX_DESCRIPTORS))
                 return;
         if ((!text) || (!user))
         {
@@ -501,18 +501,19 @@ void ChanExceptSender(chanrec* Ptr, userrec* user, char status, char* text, ...)
        switch (status)
        {
                case '@':
-                       Ptr->GetOppedUsers();
+                       ulist = Ptr->GetOppedUsers();
                break;
                case '%':
-                       Ptr->GetHalfoppedUsers();
+                       ulist = Ptr->GetHalfoppedUsers();
                break;
                case '+':
-                       Ptr->GetVoicedUsers();
+                       ulist = Ptr->GetVoicedUsers();
                break;
                default:
-                       Ptr->GetUsers();
+                       ulist = Ptr->GetUsers();
                break;
        }
+       log(DEBUG,"%d users to write to",ulist->size());
        for (std::map<char*,char*>::iterator i = ulist->begin(); i != ulist->end(); i++)
         {
                 char* o = i->second;
@@ -533,16 +534,16 @@ void ChanExceptSender_NoFormat(chanrec* Ptr, userrec* user, char status, const c
         switch (status)
         {
                 case '@':
-                        Ptr->GetOppedUsers();
+                        ulist = Ptr->GetOppedUsers();
                 break;  
                 case '%':
-                        Ptr->GetHalfoppedUsers();
+                        ulist = Ptr->GetHalfoppedUsers();
                 break;
                 case '+':
-                        Ptr->GetVoicedUsers();
+                        ulist = Ptr->GetVoicedUsers();
                 break;
                 default:
-                       Ptr->GetUsers();
+                       ulist = Ptr->GetUsers();
                break;
         }
         for (std::map<char*,char*>::iterator i = ulist->begin(); i != ulist->end(); i++)
@@ -1285,7 +1286,10 @@ int usercount_invisible(void)
 
 int usercount_opers(void)
 {
-        return all_opers.size();
+       int c = 0;
+       for (user_hash::const_iterator i = clientlist.begin(); i != clientlist.end(); i++)
+               if (*i->second->oper) c++;
+        return c;
 }
 
 int usercount_unknown(void)