leak
[oweals/gnunet.git] / src / datastore / gnunet-service-datastore.c
index f139998e909bb6f3eaa9256f3bdbf9c7e96ed27e..f80abef0653c54319135d371220cc06a14ebbde8 100644 (file)
@@ -899,6 +899,7 @@ handle_get (void *cls,
                  "Empty result set for `%s' request.\n",
                  "GET");
 #endif 
+      GNUNET_SERVER_client_keep (client);
       transmit_item (client,
                     NULL, NULL, 0, NULL, 0, 0, 0, 
                     GNUNET_TIME_UNIT_ZERO_ABS, 0);
@@ -1069,7 +1070,6 @@ handle_remove (void *cls,
   GNUNET_CRYPTO_hash (&dm[1],
                      ntohl(dm->size),
                      &vhash);
-  GNUNET_SERVER_client_keep (client);
   plugin->api->get (plugin->api->cls,
                    &dm->key,
                    &vhash,
@@ -1195,6 +1195,11 @@ cleaning_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   unload_plugin (plugin);
   plugin = NULL;
+  if (filter != NULL)
+    {
+      GNUNET_CONTAINER_bloomfilter_free (filter);
+      filter = NULL;
+    }
 }
 
 
@@ -1296,6 +1301,7 @@ run (void *cls,
   if (NULL == plugin)
     {
       GNUNET_CONTAINER_bloomfilter_free (filter);
+      filter = NULL;
       return;
     }
   GNUNET_SERVER_disconnect_notify (server, &cleanup_reservations, NULL);