fix
[oweals/gnunet.git] / src / hostlist / hostlist-server.c
index d8c8db476cab5c33846f7ac157f4f21a1f59eb0c..62d4fa64b0eb543a740658e39727fc492452cf6b 100644 (file)
@@ -49,11 +49,6 @@ static struct MHD_Daemon *daemon_handle_v4;
  */
 static const struct GNUNET_CONFIGURATION_Handle *cfg;
 
-/**
- * Our scheduler.
- */
-static struct GNUNET_SCHEDULER_Handle *sched;
-
 /**
  * For keeping statistics.
  */ 
@@ -163,7 +158,7 @@ check_has_addr (void *cls,
 {
   int *arg = cls;
 
-  if (GNUNET_TIME_absolute_get_remaining (expiration).value == 0)
+  if (GNUNET_TIME_absolute_get_remaining (expiration).rel_value == 0)
     {
       GNUNET_STATISTICS_update (stats,
                                gettext_noop("expired addresses encountered"),
@@ -183,13 +178,21 @@ check_has_addr (void *cls,
 static void
 host_processor (void *cls,
                const struct GNUNET_PeerIdentity * peer,
-                const struct GNUNET_HELLO_Message *hello)
+                const struct GNUNET_HELLO_Message *hello,
+                const char *err_msg)
 {
   struct HostSet *results = cls;
   size_t old;
   size_t s;
   int has_addr;
   
+  if (err_msg != NULL)
+  {
+       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                     _("Error in communication with PEERINFO service:\n `%s'"), err_msg);
+       return;
+  }
+
   if (peer == NULL)
     {
       pitr = NULL;
@@ -381,15 +384,13 @@ adv_transmit_ready ( void *cls, size_t size, void *buf)
  *
  * @param cls closure
  * @param peer peer identity this notification is about
- * @param latency reported latency of the connection with 'other'
- * @param distance reported distance (DV) to 'other'
+ * @param atsi performance data
  */
 static void
 connect_handler (void *cls,
                  const struct
                  GNUNET_PeerIdentity * peer,
-                 struct GNUNET_TIME_Relative latency,
-                 uint32_t distance)
+                const struct GNUNET_TRANSPORT_ATS_Information *atsi)
 {
   size_t size;
 
@@ -413,6 +414,7 @@ connect_handler (void *cls,
               "Asked core to transmit advertisement message with a size of %u bytes to peer `%s'\n",
              size,GNUNET_i2s(peer));
   if (NULL == GNUNET_CORE_notify_transmit_ready (core,
+                                                GNUNET_YES,
                                                 0,
                                                 GNUNET_ADV_TIMEOUT,
                                                 peer,
@@ -446,17 +448,25 @@ disconnect_handler (void *cls,
  * @param cls closure (not used)
  * @param peer potential peer to connect to
  * @param hello HELLO for this peer (or NULL)
+ * @param err_msg NULL if successful, otherwise contains error message
  */
 static void
 process_notify (void *cls,
                 const struct GNUNET_PeerIdentity *peer,
-                const struct GNUNET_HELLO_Message *hello)
+                const struct GNUNET_HELLO_Message *hello,
+                const char *err_msg)
 {
   struct HostSet *results;
 #if DEBUG_HOSTLIST_SERVER
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
             "Peerinfo is notifying us to rebuild our hostlist\n");
 #endif
+  if (err_msg != NULL)
+  {
+         GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                     _("Error in communication with PEERINFO service\n"));
+       /* return; */
+  }
   results = GNUNET_malloc(sizeof(struct HostSet));
   GNUNET_assert (peerinfo != NULL);
   pitr = GNUNET_PEERINFO_iterate (peerinfo,
@@ -533,14 +543,13 @@ prepare_daemon (struct MHD_Daemon *daemon_handle)
                                &max));
   haveto = MHD_get_timeout (daemon_handle, &timeout);
   if (haveto == MHD_YES)
-    tv.value = (uint64_t) timeout;
+    tv.rel_value = (uint64_t) timeout;
   else
     tv = GNUNET_TIME_UNIT_FOREVER_REL;
   GNUNET_NETWORK_fdset_copy_native (wrs, &rs, max + 1);
   GNUNET_NETWORK_fdset_copy_native (wws, &ws, max + 1);
   GNUNET_NETWORK_fdset_copy_native (wes, &es, max + 1);
-  ret = GNUNET_SCHEDULER_add_select (sched,
-                                    GNUNET_SCHEDULER_PRIORITY_HIGH,
+  ret = GNUNET_SCHEDULER_add_select (GNUNET_SCHEDULER_PRIORITY_HIGH,
                                     GNUNET_SCHEDULER_NO_TASK,
                                     tv,
                                     wrs,
@@ -562,7 +571,6 @@ prepare_daemon (struct MHD_Daemon *daemon_handle)
  */
 int
 GNUNET_HOSTLIST_server_start (const struct GNUNET_CONFIGURATION_Handle *c,
-                             struct GNUNET_SCHEDULER_Handle *s,
                              struct GNUNET_STATISTICS_Handle *st,
                              struct GNUNET_CORE_Handle *co,
                              GNUNET_CORE_ConnectEventHandler *server_ch,
@@ -580,10 +588,9 @@ GNUNET_HOSTLIST_server_start (const struct GNUNET_CONFIGURATION_Handle *c,
   else
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Advertising enabled on this hostlist server\n");
-  sched = s;
   cfg = c;
   stats = st;
-  peerinfo = GNUNET_PEERINFO_connect (sched, cfg);
+  peerinfo = GNUNET_PEERINFO_connect (cfg);
   if (peerinfo == NULL)
     {
       GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
@@ -682,7 +689,7 @@ GNUNET_HOSTLIST_server_start (const struct GNUNET_CONFIGURATION_Handle *c,
   if (daemon_handle_v6 != NULL)
     hostlist_task_v6 = prepare_daemon (daemon_handle_v6);
 
-  notify = GNUNET_PEERINFO_notify ( cfg, sched, process_notify, NULL);
+  notify = GNUNET_PEERINFO_notify ( cfg, process_notify, NULL);
 
   return GNUNET_OK;
 }
@@ -704,12 +711,12 @@ GNUNET_HOSTLIST_server_stop ()
     }
   if (GNUNET_SCHEDULER_NO_TASK != hostlist_task_v6)
     {
-      GNUNET_SCHEDULER_cancel (sched, hostlist_task_v6);
+      GNUNET_SCHEDULER_cancel (hostlist_task_v6);
       hostlist_task_v6 = GNUNET_SCHEDULER_NO_TASK;
     }
   if (GNUNET_SCHEDULER_NO_TASK != hostlist_task_v4)
     {
-      GNUNET_SCHEDULER_cancel (sched, hostlist_task_v4);
+      GNUNET_SCHEDULER_cancel (hostlist_task_v4);
       hostlist_task_v4 = GNUNET_SCHEDULER_NO_TASK;
     }
   if (pitr != NULL)
@@ -738,7 +745,6 @@ GNUNET_HOSTLIST_server_stop ()
       peerinfo = NULL;
     }
   cfg = NULL;
-  sched = NULL;
   stats = NULL;
   core = NULL;
 }