]> git.stg.codes - stg.git/blobdiff - projects/stargazer/traffcounter.cpp
У трафкаунтері виправлена втрата файлового дескриптора при обробці
[stg.git] / projects / stargazer / traffcounter.cpp
index e834b81fb9be562607d38d7a1d87698c24f72799..e9c143ecd9d1818ff85e8e3eb9e50c97a6c2b616 100644 (file)
@@ -409,7 +409,7 @@ printfd(__FILE__, "AddUser: %s\n", user->GetLogin().c_str());
 uint32_t uip = user->GetCurrIP();
 pair<ip2p_iter, ip2p_iter> pi;
 
 uint32_t uip = user->GetCurrIP();
 pair<ip2p_iter, ip2p_iter> pi;
 
-STG_LOCKER(&mutex, __FILE__, __LINE__);
+STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 // Find all packets with IP belongs to this user
 pi = ip2packets.equal_range(uip);
 
 // Find all packets with IP belongs to this user
 pi = ip2packets.equal_range(uip);
 
@@ -446,7 +446,7 @@ void TRAFFCOUNTER::DelUser(uint32_t uip)
 printfd(__FILE__, "DelUser: %s \n", inet_ntostring(uip).c_str());
 pair<ip2p_iter, ip2p_iter> pi;
 
 printfd(__FILE__, "DelUser: %s \n", inet_ntostring(uip).c_str());
 pair<ip2p_iter, ip2p_iter> pi;
 
-STG_LOCKER(&mutex, __FILE__, __LINE__);
+STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 pi = ip2packets.equal_range(uip);
 
 while (pi.first != pi.second)
 pi = ip2packets.equal_range(uip);
 
 while (pi.first != pi.second)
@@ -698,6 +698,7 @@ while (fgets(str, 1023, f))
     if (r != 3)
         {
         WriteServLog("Error in file %s. There must be 3 parameters. Line %d.", rulesFileName.c_str(), lineNumber);
     if (r != 3)
         {
         WriteServLog("Error in file %s. There must be 3 parameters. Line %d.", rulesFileName.c_str(), lineNumber);
+        fclose(f);
         return true;
         }
 
         return true;
         }
 
@@ -720,6 +721,7 @@ while (fgets(str, 1023, f))
         {
         WriteServLog("Error in file %s. Line %d.",
                      rulesFileName.c_str(), lineNumber);
         {
         WriteServLog("Error in file %s. Line %d.",
                      rulesFileName.c_str(), lineNumber);
+        fclose(f);
         return true;
         }
 
         return true;
         }
 
@@ -727,6 +729,7 @@ while (fgets(str, 1023, f))
         {
         WriteServLog("Error in file %s. Error in adress. Line %d.",
                      rulesFileName.c_str(), lineNumber);
         {
         WriteServLog("Error in file %s. Error in adress. Line %d.",
                      rulesFileName.c_str(), lineNumber);
+        fclose(f);
         return true;
         }
     if (!test)
         return true;
         }
     if (!test)