X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/cae8a878811382886af21000064ff659309f7e4c..19a51ab18134eb8448cc5f57a2121ce2f8644ac4:/projects/rscriptd/listener.cpp

diff --git a/projects/rscriptd/listener.cpp b/projects/rscriptd/listener.cpp
index 82dd6318..e9aacc19 100644
--- a/projects/rscriptd/listener.cpp
+++ b/projects/rscriptd/listener.cpp
@@ -33,10 +33,10 @@
 #include <sstream>
 #include <algorithm>
 
+#include "stg/scriptexecuter.h"
+#include "stg/locker.h"
+#include "stg/common.h"
 #include "listener.h"
-#include "script_executer.h"
-#include "stg_locker.h"
-#include "common.h"
 
 void InitEncrypt(BLOWFISH_CTX * ctx, const std::string & password);
 void Decrypt(BLOWFISH_CTX * ctx, char * dst, const char * src, int len8);
@@ -331,16 +331,10 @@ return false;
 //-----------------------------------------------------------------------------
 void LISTENER::ProcessPending()
 {
-std::list<PendingData> localPending;
-
-    {
-    STG_LOCKER lock(&mutex, __FILE__, __LINE__);
-    printfd(__FILE__, "Pending data size: %d\n", pending.size());
-    localPending.swap(pending);
-    }
-
-std::list<PendingData>::iterator it(localPending.begin());
-while (it != localPending.end())
+std::list<PendingData>::iterator it(pending.begin());
+size_t count = 0;
+printfd(__FILE__, "Pending: %d\n", pending.size());
+while (it != pending.end() && count < 256)
     {
     std::vector<AliveData>::iterator uit(
             std::lower_bound(
@@ -381,7 +375,10 @@ while (it != localPending.end())
             }
         }
     ++it;
+    ++count;
     }
+STG_LOCKER lock(&mutex, __FILE__, __LINE__);
+pending.erase(pending.begin(), it);
 }
 //-----------------------------------------------------------------------------
 void LISTENER::ProcessTimeouts()