- fix
[oweals/gnunet.git] / src / peerinfo / peerinfo_api.c
index f01c2c4bba2c82882b3081253d0cd74ce2e80b9a..175397c785321799766be174318819477bbb9acb 100644 (file)
@@ -512,7 +512,6 @@ peerinfo_handler (void *cls, const struct GNUNET_MessageHeader *msg)
   if (NULL == ic)
   {
     /* didn't expect a response, reconnect */
-    GNUNET_PEERINFO_iterate_cancel (ic);
     reconnect (h);
     return;
   }
@@ -524,14 +523,15 @@ peerinfo_handler (void *cls, const struct GNUNET_MessageHeader *msg)
     /* normal end of list of peers, signal end, process next pending request */
     LOG (GNUNET_ERROR_TYPE_DEBUG,
          "Received end of list of peers from `%s' service\n", "PEERINFO");
-    GNUNET_PEERINFO_iterate_cancel (ic);   
+    GNUNET_PEERINFO_iterate_cancel (ic);
     trigger_transmit (h);
-    if (GNUNET_NO == h->in_receive)
+    if ( (GNUNET_NO == h->in_receive) &&
+        (NULL != h->ic_head) )
     {
       h->in_receive = GNUNET_YES;
       GNUNET_CLIENT_receive (h->client, &peerinfo_handler, h,
-                            GNUNET_TIME_absolute_get_remaining (ic->timeout));
-    }
+                            GNUNET_TIME_absolute_get_remaining (h->ic_head->timeout));
+    }    
     if (NULL != cb)
       cb (cb_cls, NULL, NULL, NULL);
     return;
@@ -683,10 +683,10 @@ signal_timeout (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 
 
 /**
- * Call a method for each known matching host and change its trust
- * value.  The callback method will be invoked once for each matching
- * host and then finally once with a NULL pointer.  After that final
- * invocation, the iterator context must no longer be used.
+ * Call a method for each known matching host.  The callback method
+ * will be invoked once for each matching host and then finally once
+ * with a NULL pointer.  After that final invocation, the iterator
+ * context must no longer be used.
  *
  * Instead of calling this function with 'peer == NULL' it is often
  * better to use 'GNUNET_PEERINFO_notify'.