- Fix #4532
authorMartin Schanzenbach <mschanzenbach@posteo.de>
Sun, 29 May 2016 11:19:50 +0000 (11:19 +0000)
committerMartin Schanzenbach <mschanzenbach@posteo.de>
Sun, 29 May 2016 11:19:50 +0000 (11:19 +0000)
src/fs/gnunet-service-fs_cp.c
src/include/gnunet_peerstore_service.h
src/peerstore/gnunet-service-peerstore.c
src/peerstore/peerstore_api.c

index 53838a542cde00d52a38c05305da424720d0f001..7ec02f916c118713c4c9e16ae53c5683a79425f2 100644 (file)
@@ -605,9 +605,8 @@ ats_reserve_callback (void *cls,
  * @param cls handle to connected peer entry
  * @param record peerstore record information
  * @param emsg error message, or NULL if no errors
- * @return #GNUNET_NO to stop iterating since we only expect 0 or 1 records
  */
-static int
+static void
 peer_respect_cb (void *cls,
                  const struct GNUNET_PEERSTORE_Record *record,
                  const char *emsg)
@@ -615,13 +614,18 @@ peer_respect_cb (void *cls,
   struct GSF_ConnectedPeer *cp = cls;
 
   GNUNET_assert (NULL != cp->respect_iterate_req);
-  cp->respect_iterate_req = NULL;
+  printf("Got a record!\n");
   if ((NULL != record) && (sizeof (cp->disk_respect) == record->value_size))
     cp->disk_respect = cp->ppd.respect = *((uint32_t *)record->value);
   GSF_push_start_ (cp);
   if (NULL != cp->creation_cb)
     cp->creation_cb (cp->creation_cb_cls, cp);
-  return GNUNET_NO;
+  if (NULL != record)
+  {
+    printf("Cancelling!\n");
+    GNUNET_PEERSTORE_iterate_cancel (cp->respect_iterate_req);
+    cp->respect_iterate_req = NULL;
+  }
 }
 
 
index e9e344d8835edffa47e58200ba7892a99dfe0a53..97d3a38289dc40ca5336e2bd902d6ed3d7edf3de 100644 (file)
@@ -133,9 +133,8 @@ typedef void
  * @param cls closure
  * @param record peerstore record information
  * @param emsg error message, or NULL if no errors
- * @return #GNUNET_YES to continue iterating, #GNUNET_NO to stop
  */
-typedef int
+typedef void
 (*GNUNET_PEERSTORE_Processor) (void *cls,
                                const struct GNUNET_PEERSTORE_Record *record,
                                const char *emsg);
index 048201c776ab5ac9cfcdf2d8ce6ccbdcc34e1edd..af6438bb253c1496f58a14ea0884ad4f7ad734f0 100644 (file)
@@ -251,7 +251,7 @@ handle_client_disconnect (void *cls, struct GNUNET_SERVER_Client *client)
  * @param emsg error message or NULL if no errors
  * @return #GNUNET_YES to continue iteration
  */
-static int
+static void
 record_iterator (void *cls, const struct GNUNET_PEERSTORE_Record *record,
                  const char *emsg)
 {
@@ -270,7 +270,7 @@ record_iterator (void *cls, const struct GNUNET_PEERSTORE_Record *record,
     GNUNET_SERVER_receive_done (cls_record->client,
                                 NULL == emsg ? GNUNET_OK : GNUNET_SYSERR);
     PEERSTORE_destroy_record (cls_record);
-    return GNUNET_NO;
+    return;
   }
 
   srm =
@@ -282,7 +282,6 @@ record_iterator (void *cls, const struct GNUNET_PEERSTORE_Record *record,
                                               (struct GNUNET_MessageHeader *)
                                               srm, GNUNET_NO);
   GNUNET_free (srm);
-  return GNUNET_YES;
 }
 
 
index f1c5ccd3228e5ac40d744ef0096035bbcf599728..0339ff93a4b597768b9abb4f64fa27b858118f9c 100644 (file)
@@ -670,7 +670,6 @@ handle_iterate_result (void *cls, const struct GNUNET_MessageHeader *msg)
   void *callback_cls;
   uint16_t msg_type;
   struct GNUNET_PEERSTORE_Record *record;
-  int continue_iter;
 
   ic = h->iterate_head;
   if (NULL == ic)
@@ -704,16 +703,13 @@ handle_iterate_result (void *cls, const struct GNUNET_MessageHeader *msg)
   {
     record = PEERSTORE_parse_record_message (msg);
     if (NULL == record)
-      continue_iter =
-          callback (callback_cls, NULL,
+      callback (callback_cls, NULL,
                     _("Received a malformed response from service."));
     else
     {
-      continue_iter = callback (callback_cls, record, NULL);
+      callback (callback_cls, record, NULL);
       PEERSTORE_destroy_record (record);
     }
-    if (GNUNET_NO == continue_iter)
-      ic->callback = NULL;
   }
 }