-trying to fix double-cancel
[oweals/gnunet.git] / src / core / gnunet-core.c
index 4f49f81308407dbea1b82a796d5e4c7a49a5c897..4dbe49c50ee0f7225e3efa0f97e8f61394281cff 100644 (file)
@@ -44,6 +44,8 @@ static int monitor_connections_counter;
 
 static struct GNUNET_CORE_Handle *ch;
 
+static struct GNUNET_PeerIdentity my_id;
+
 /**
  * Task run in monitor mode when the user presses CTRL-C to abort.
  * Stops monitoring activity.
@@ -68,20 +70,23 @@ shutdown_task (void *cls,
  *
  * @param cls closure (unused)
  * @param peer peer identity this notification is about
- * @param atsi performance data for the connection
- * @param atsi_count number of records in 'atsi'
  */
 static void
-connected_peer_callback (void *cls, const struct GNUNET_PeerIdentity *peer,
-                         const struct GNUNET_ATS_Information *atsi,
-                         unsigned int atsi_count)
+connected_peer_callback (void *cls,
+                        const struct GNUNET_PeerIdentity *peer)
 {
-  struct GNUNET_CRYPTO_HashAsciiEncoded enc;
-
   if (NULL == peer)
     return;
-  GNUNET_CRYPTO_hash_to_enc (&peer->hashPubKey, &enc);
-  printf (_("Peer `%s'\n"), (const char *) &enc);
+  printf (_("Peer `%s'\n"),
+         GNUNET_i2s_full (peer));
+}
+
+
+static void
+monitor_notify_startup (void *cls,
+                       const struct GNUNET_PeerIdentity *my_identity)
+{
+  my_id = (*my_identity);
 }
 
 
@@ -91,23 +96,23 @@ connected_peer_callback (void *cls, const struct GNUNET_PeerIdentity *peer,
  *
  * @param cls closure
  * @param peer the peer that connected
- * @param ats performance data
- * @param ats_count number of entries in ats (excluding 0-termination)
  */
 static void
-monitor_notify_connect (void *cls, const struct GNUNET_PeerIdentity *peer,
-                const struct GNUNET_ATS_Information *ats, uint32_t ats_count)
+monitor_notify_connect (void *cls, const struct GNUNET_PeerIdentity *peer)
 {
-  monitor_connections_counter ++;
   struct GNUNET_TIME_Absolute now = GNUNET_TIME_absolute_get();
-  char *now_str = GNUNET_STRINGS_absolute_time_to_string (now);
-  FPRINTF (stdout, _("%24s: %-17s %4s   (%u connections in total)\n"),
-           now_str,
-           _("Connected to"),
-           GNUNET_i2s (peer),
-           monitor_connections_counter);
-
-  GNUNET_free (now_str);
+  const char *now_str;
+
+  if (0 != memcmp (&my_id, peer, sizeof (my_id)))
+  {
+    monitor_connections_counter ++;
+    now_str = GNUNET_STRINGS_absolute_time_to_string (now);
+    FPRINTF (stdout, _("%24s: %-17s %4s   (%u connections in total)\n"),
+             now_str,
+             _("Connected to"),
+             GNUNET_i2s (peer),
+             monitor_connections_counter);
+  }
 }
 
 
@@ -122,21 +127,23 @@ static void
 monitor_notify_disconnect (void *cls, const struct GNUNET_PeerIdentity *peer)
 {
   struct GNUNET_TIME_Absolute now = GNUNET_TIME_absolute_get();
-  char *now_str = GNUNET_STRINGS_absolute_time_to_string (now);
+  const char *now_str;
 
-  GNUNET_assert (monitor_connections_counter > 0);
-  monitor_connections_counter --;
-
-  FPRINTF (stdout, _("%24s: %-17s %4s   (%u connections in total)\n"),
-           now_str,
-           _("Disconnected from"),
-           GNUNET_i2s (peer),
-           monitor_connections_counter);
-  GNUNET_free (now_str);
+  if (0 != memcmp (&my_id, peer, sizeof (my_id)))
+  {
+    now_str = GNUNET_STRINGS_absolute_time_to_string (now);
+
+    GNUNET_assert (monitor_connections_counter > 0);
+    monitor_connections_counter--;
+    FPRINTF (stdout, _("%24s: %-17s %4s   (%u connections in total)\n"),
+             now_str,
+             _("Disconnected from"),
+             GNUNET_i2s (peer),
+             monitor_connections_counter);
+  }
 }
 
 
-
 /**
  * Main function that will be run by the scheduler.
  *
@@ -149,6 +156,9 @@ static void
 run (void *cls, char *const *args, const char *cfgfile,
      const struct GNUNET_CONFIGURATION_Handle *cfg)
 {
+  static const struct GNUNET_CORE_MessageHandler handlers[] = {
+    {NULL, 0, 0}
+  };
   if (args[0] != NULL)
   {
     FPRINTF (stderr, _("Invalid command line argument `%s'\n"), args[0]);
@@ -158,11 +168,9 @@ run (void *cls, char *const *args, const char *cfgfile,
     GNUNET_CORE_iterate_peers (cfg, &connected_peer_callback, NULL);
   else
   {
-    const static struct GNUNET_CORE_MessageHandler handlers[] = {
-      {NULL, 0, 0}
-    };
-
-    ch = GNUNET_CORE_connect (cfg, NULL, NULL,
+    memset(&my_id, '\0', sizeof (my_id));
+    ch = GNUNET_CORE_connect (cfg, NULL,
+                              monitor_notify_startup,
                               monitor_notify_connect,
                               monitor_notify_disconnect,
                               NULL, GNUNET_NO,