Added message processing callback call upon message reading within memcached_purge
[m6w6/libmemcached] / libmemcached / memcached_purge.c
index 40c8ad61a5af5d0e956e2a4c246601d9fcf1acf3..7485da33d343bcacb046f2a6d5153e323605b201 100644 (file)
@@ -10,7 +10,7 @@ memcached_return memcached_purge(memcached_server_st *ptr)
   if (ptr->root->purging || /* already purging */
       (memcached_server_response_count(ptr) < ptr->root->io_msg_watermark &&
       ptr->io_bytes_sent < ptr->root->io_bytes_watermark) ||
-      (ptr->io_bytes_sent > ptr->root->io_bytes_watermark &&
+      (ptr->io_bytes_sent >= ptr->root->io_bytes_watermark &&
       memcached_server_response_count(ptr) < 2))
   {
     return MEMCACHED_SUCCESS;
@@ -65,6 +65,20 @@ memcached_return memcached_purge(memcached_server_st *ptr)
         ret = rc;
         memcached_io_reset(ptr);
       }
+
+      if (ptr->root->callbacks != NULL)
+      {
+        memcached_callback_st cb = *ptr->root->callbacks;
+        if (rc == MEMCACHED_SUCCESS)
+        {
+          for (unsigned int y = 0; y < cb.number_of_callback; y++)
+          {
+            rc = (*cb.callback[y])(ptr->root, result_ptr, cb.context);
+            if (rc != MEMCACHED_SUCCESS)
+              break;
+          }
+        }
+      }
     }
 
     memcached_result_free(result_ptr);