]> git.stg.codes - stg.git/commitdiff
Виправлено некоректну роботу з періодом відправки повідомлень
authorMaxim Mamontov <faust@gts.dp.ua>
Thu, 6 Jan 2011 14:08:19 +0000 (16:08 +0200)
committerMaxim Mamontov <faust@gts.dp.ua>
Thu, 6 Jan 2011 14:08:19 +0000 (16:08 +0200)
projects/stargazer/user.cpp

index e63d37d32b109c17c44216929dbb023f5f11ff37..3d9371fda7f7c5110f200c92175f31668ef00416 100644 (file)
@@ -1158,8 +1158,8 @@ if (SendMessage(*msg))
     if (store->AddMessage(msg, login))
         {
         errorStr = store->GetStrError();
-        WriteServLog("Error adding message %s", errorStr.c_str());
-        WriteServLog("%s", store->GetStrError().c_str());
+        WriteServLog("Error adding message: '%s'", errorStr.c_str());
+        printfd(__FILE__, "Error adding message: '%s'\n", errorStr.c_str());
         return -1;
         }
     messages.push_back(*msg);
@@ -1178,8 +1178,8 @@ else
         if (store->AddMessage(msg, login))
             {
             errorStr = store->GetStrError();
-            WriteServLog("Error adding message %s", errorStr.c_str());
-            WriteServLog("%s", store->GetStrError().c_str());
+            WriteServLog("Error adding repeatable message: '%s'", errorStr.c_str());
+            printfd(__FILE__, "Error adding repeatable message: '%s'\n", errorStr.c_str());
             return -1;
             }
         messages.push_back(*msg);
@@ -1256,34 +1256,40 @@ for (unsigned i = 0; i < hdrsList.size(); i++)
 std::list<STG_MSG>::iterator it(messages.begin());
 while (it != messages.end())
     {
-    if (SendMessage(*it))
-        {
-        return -1;
-        }
-    it->header.repeat--;
-    if (it->header.repeat < 0)
+    if (static_cast<time_t>(it->header.lastSendTime + it->header.repeatPeriod * 60) < stgTime)
         {
-        printfd(__FILE__, "DelMessage\n");
-        if (store->DelMessage(it->header.id, login))
+        if (SendMessage(*it))
             {
-            WriteServLog("Error deleting message: '%s'", store->GetStrError().c_str());
-            printfd(__FILE__, "Error deleting message: '%s'\n", store->GetStrError().c_str());
+            return -1;
+            }
+        it->header.repeat--;
+        if (it->header.repeat < 0)
+            {
+            if (store->DelMessage(it->header.id, login))
+                {
+                WriteServLog("Error deleting message: '%s'", store->GetStrError().c_str());
+                printfd(__FILE__, "Error deleting message: '%s'\n", store->GetStrError().c_str());
+                }
+            messages.erase(it++);
+            }
+        else
+            {
+            #ifndef DEBUG
+            //TODO: gcc v. 4.x generate ICE on x86_64
+            it->header.lastSendTime = time(NULL);
+            #else
+            it->header.lastSendTime = stgTime;
+            #endif
+            if (store->EditMessage(*it, login))
+                {
+                WriteServLog("Error modifying message: '%s'", store->GetStrError().c_str());
+                printfd(__FILE__, "Error modifying message: '%s'\n", store->GetStrError().c_str());
+                }
+            ++it;
             }
-        messages.erase(it++);
         }
     else
         {
-        #ifndef DEBUG
-        //TODO: gcc v. 4.x generate ICE on x86_64
-        it->header.lastSendTime = time(NULL);
-        #else
-        it->header.lastSendTime = stgTime;
-        #endif
-        if (store->EditMessage(*it, login))
-            {
-            WriteServLog("Error modifying message: '%s'", store->GetStrError().c_str());
-            printfd(__FILE__, "Error modifying message: '%s'\n", store->GetStrError().c_str());
-            }
         ++it;
         }
     }