(no commit message)
[oweals/gnunet.git] / src / datastore / gnunet-service-datastore.c
index 8a896a7fbdcce5bd2e9cc5ccb90dbc4daac7afe6..6c064743e89d1019cc2c542106578e94cc5d4b55 100644 (file)
@@ -350,7 +350,7 @@ expired_processor (void *cls,
       return GNUNET_SYSERR;
     }
   now = GNUNET_TIME_absolute_get ();
-  if (expiration.value > now.value)
+  if (expiration.abs_value > now.abs_value)
     {
       /* finished processing */
       plugin->api->next_request (next_cls, GNUNET_YES);
@@ -362,7 +362,7 @@ expired_processor (void *cls,
              "Deleting content `%s' of type %u that expired %llu ms ago\n",
              GNUNET_h2s (key),
              type,
-             (unsigned long long) (now.value - expiration.value));
+             (unsigned long long) (now.abs_value - expiration.abs_value));
 #endif
   GNUNET_STATISTICS_update (stats,
                            gettext_noop ("# bytes expired"),
@@ -514,14 +514,16 @@ transmit_callback (void *cls,
   msize = ntohs(tcc->msg->size);
   if (size == 0)
     {
-#if DEBUG_DATASTORE
       GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                 "Transmission failed.\n");
-#endif
+                 _("Transmission to client failed!\n"));
       if (tcc->tc != NULL)
        tcc->tc (tcc->tc_cls, GNUNET_SYSERR);
       if (GNUNET_YES == tcc->end)
-       GNUNET_SERVER_receive_done (tcc->client, GNUNET_SYSERR);       
+       {
+         GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+                     _("Disconnecting client due to transmission failure!\n"));
+         GNUNET_SERVER_receive_done (tcc->client, GNUNET_SYSERR);       
+       }
       GNUNET_SERVER_client_drop (tcc->client);
       GNUNET_free (tcc->msg);
       GNUNET_free (tcc);
@@ -596,10 +598,8 @@ transmit (struct GNUNET_SERVER_Client *client,
       GNUNET_break (0);
       if (GNUNET_YES == end)
        {
-#if DEBUG_DATASTORE
          GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                     "Disconnecting client.\n");
-#endif   
+                     _("Forcefully disconnecting client.\n"));
          GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
        }
       if (NULL != tc)
@@ -1255,11 +1255,43 @@ handle_get_random (void *cls,
                            GNUNET_NO);
   GNUNET_SERVER_client_keep (client);
   plugin->api->iter_migration_order (plugin->api->cls,
-                                    0,
+                                    GNUNET_BLOCK_TYPE_ANY,
                                     &transmit_item,
                                     client);  
 }
 
+/**
+ * Handle GET_ZERO_ANONYMITY-message.
+ *
+ * @param cls closure
+ * @param client identification of the client
+ * @param message the actual message
+ */
+static void
+handle_get_zero_anonymity (void *cls,
+                          struct GNUNET_SERVER_Client *client,
+                          const struct GNUNET_MessageHeader *message)
+{
+  const struct GetZeroAnonymityMessage * msg = (const struct GetZeroAnonymityMessage*) message;
+  enum GNUNET_BLOCK_Type type;
+
+  type = (enum GNUNET_BLOCK_Type) ntohl (msg->type);
+#if DEBUG_DATASTORE
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+             "Processing `%s' request\n",
+             "GET_ZERO_ANONYMITY");
+#endif
+  GNUNET_STATISTICS_update (stats,
+                           gettext_noop ("# GET ZERO ANONYMITY requests received"),
+                           1,
+                           GNUNET_NO);
+  GNUNET_SERVER_client_keep (client);
+  plugin->api->iter_zero_anonymity (plugin->api->cls,
+                                   type,
+                                   &transmit_item,
+                                   client);  
+}
+
 
 /**
  * Context for the 'remove_callback'.
@@ -1373,7 +1405,7 @@ handle_remove (void *cls,
   plugin->api->get (plugin->api->cls,
                    &dm->key,
                    &vhash,
-                   ntohl(dm->type),
+                   (enum GNUNET_BLOCK_Type) ntohl(dm->type),
                    &remove_callback,
                    rc);
 }
@@ -1454,7 +1486,7 @@ process_stat_in (void *cls,
 #if DEBUG_SQLITE
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
              "Notification from statistics about existing payload (%llu), new payload is %llu\n",
-             value,
+             abs_value,
              payload);
 #endif
   return GNUNET_OK;
@@ -1675,6 +1707,8 @@ run (void *cls,
     {&handle_get, NULL, GNUNET_MESSAGE_TYPE_DATASTORE_GET, 0 }, 
     {&handle_get_random, NULL, GNUNET_MESSAGE_TYPE_DATASTORE_GET_RANDOM, 
      sizeof(struct GNUNET_MessageHeader) }, 
+    {&handle_get_zero_anonymity, NULL, GNUNET_MESSAGE_TYPE_DATASTORE_GET_ZERO_ANONYMITY, 
+     sizeof(struct GetZeroAnonymityMessage) }, 
     {&handle_remove, NULL, GNUNET_MESSAGE_TYPE_DATASTORE_REMOVE, 0 }, 
     {&handle_drop, NULL, GNUNET_MESSAGE_TYPE_DATASTORE_DROP, 
      sizeof(struct GNUNET_MessageHeader) },