gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r34554 - in gnunet: . src/dns src/include src/peerinfo-tool


From: gnunet
Subject: [GNUnet-SVN] r34554 - in gnunet: . src/dns src/include src/peerinfo-tool
Date: Sun, 14 Dec 2014 21:52:16 +0100

Author: grothoff
Date: 2014-12-14 21:52:16 +0100 (Sun, 14 Dec 2014)
New Revision: 34554

Modified:
   gnunet/configure.ac
   gnunet/src/dns/install-dns-helper.sh
   gnunet/src/include/gnunet_core_service.h
   gnunet/src/include/gnunet_hello_lib.h
   gnunet/src/include/gnunet_peerinfo_service.h
   gnunet/src/include/gnunet_transport_service.h
   gnunet/src/peerinfo-tool/gnunet-peerinfo.c
Log:
-fixing peerinfo part of #3559

Modified: gnunet/configure.ac
===================================================================
--- gnunet/configure.ac 2014-12-14 14:54:54 UTC (rev 34553)
+++ gnunet/configure.ac 2014-12-14 20:52:16 UTC (rev 34554)
@@ -1079,12 +1079,12 @@
         AC_CHECK_LIB([gnutls], [gnutls_priority_set],
           gnutls=true))
     AC_CHECK_HEADERS([gnutls/dane.h],
-    AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
-            gnutls_dane=1))
+        AC_CHECK_LIB([gnutls-dane], [dane_verify_crt_raw],
+                    gnutls_dane=1))
    ])
 AM_CONDITIONAL(HAVE_GNUTLS, test x$gnutls = xtrue)
 AC_DEFINE_UNQUOTED([HAVE_GNUTLS], $gnutls, [We have GnuTLS])
-
+d
 AM_CONDITIONAL(HAVE_GNUTLS_DANE, test x$gnutls_dane = x1)
 AC_DEFINE_UNQUOTED([HAVE_GNUTLS_DANE], $gnutls_dane, [We have GnuTLS with DANE 
support])
 

Modified: gnunet/src/dns/install-dns-helper.sh
===================================================================
--- gnunet/src/dns/install-dns-helper.sh        2014-12-14 14:54:54 UTC (rev 
34553)
+++ gnunet/src/dns/install-dns-helper.sh        2014-12-14 20:52:16 UTC (rev 
34554)
@@ -1,9 +1,10 @@
-#!/bin/bash
+#!/bin/sh
 # $1 - bindir
 # $2 - gnunetdns group
 # $3 - sudo binary (optional)
-$3 chown root $1/gnunet-helper-dns || true
-$3 chgrp $2 $1/gnunet-helper-dns || true
-$3 chmod 4750 $1/gnunet-helper-dns || true
-$3 chown gnunet:$2 $1/gnunet-service-dns || true
-$3 chmod 2750 $1/gnunet-service-dns || true
+$3 chown root $1/gnunet-helper-dns
+$3 chgrp $2 $1/gnunet-helper-dns
+$3 chmod 4750 $1/gnunet-helper-dns
+$3 chown gnunet:$2 $1/gnunet-service-dns
+$3 chmod 2750 $1/gnunet-service-dns
+

Modified: gnunet/src/include/gnunet_core_service.h
===================================================================
--- gnunet/src/include/gnunet_core_service.h    2014-12-14 14:54:54 UTC (rev 
34553)
+++ gnunet/src/include/gnunet_core_service.h    2014-12-14 20:52:16 UTC (rev 
34554)
@@ -17,7 +17,6 @@
      Free Software Foundation, Inc., 59 Temple Place - Suite 330,
      Boston, MA 02111-1307, USA.
 */
-
 /**
  * @file include/gnunet_core_service.h
  * @brief core service; this is the main API for encrypted P2P

Modified: gnunet/src/include/gnunet_hello_lib.h
===================================================================
--- gnunet/src/include/gnunet_hello_lib.h       2014-12-14 14:54:54 UTC (rev 
34553)
+++ gnunet/src/include/gnunet_hello_lib.h       2014-12-14 20:52:16 UTC (rev 
34554)
@@ -411,6 +411,11 @@
 GNUNET_HELLO_get_header (struct GNUNET_HELLO_Message *hello);
 
 
+/**
+ * FIXME.
+ *
+ * @param name
+ */
 typedef struct GNUNET_TRANSPORT_PluginFunctions *
 (*GNUNET_HELLO_TransportPluginsFind) (const char *name);
 

Modified: gnunet/src/include/gnunet_peerinfo_service.h
===================================================================
--- gnunet/src/include/gnunet_peerinfo_service.h        2014-12-14 14:54:54 UTC 
(rev 34553)
+++ gnunet/src/include/gnunet_peerinfo_service.h        2014-12-14 20:52:16 UTC 
(rev 34554)
@@ -62,7 +62,7 @@
  * Disconnect from the peerinfo service.  Note that all iterators must
  * have completed or have been cancelled by the time this function is
  * called (otherwise, calling this function is a serious error).
- * Furthermore, if 'GNUNET_PEERINFO_add_peer' operations are still
+ * Furthermore, if #GNUNET_PEERINFO_add_peer() operations are still
  * pending, they will be cancelled silently on disconnect.
  *
  * @param h handle to disconnect

Modified: gnunet/src/include/gnunet_transport_service.h
===================================================================
--- gnunet/src/include/gnunet_transport_service.h       2014-12-14 14:54:54 UTC 
(rev 34553)
+++ gnunet/src/include/gnunet_transport_service.h       2014-12-14 20:52:16 UTC 
(rev 34554)
@@ -176,7 +176,7 @@
  */
 typedef void
 (*GNUNET_TRANSPORT_TryConnectCallback) (void *cls,
-                                        const int result);
+                                        int result);
 
 
 /**
@@ -296,7 +296,6 @@
 GNUNET_TRANSPORT_notify_transmit_ready_cancel (struct 
GNUNET_TRANSPORT_TransmitHandle *th);
 
 
-
 /**
  * Checks if a given peer is connected to us
  *
@@ -397,6 +396,7 @@
  */
 struct GNUNET_TRANSPORT_OfferHelloHandle;
 
+
 /**
  * Offer the transport service the HELLO of another peer.  Note that
  * the transport service may just ignore this message if the HELLO is
@@ -648,7 +648,7 @@
  * a final call with NULL for peer and address will follow when done.
  * In this case state and timeout do not contain valid values.
  *
- * The #GNUNET_TRANSPORT_monitor_peers_cancel call MUST not be called from
+ * The #GNUNET_TRANSPORT_monitor_peers_cancel() call MUST not be called from
  * within this function!
  *
  *
@@ -678,8 +678,8 @@
  * to communicate with this peer, the state this peer is currently in and the
  * the current timeout for this state.
  *
- * Upon completion, the 'GNUNET_TRANSPORT_PeerIterateCallback' is called one
- * more time with 'NULL'. After this, the operation must no longer be
+ * Upon completion, the #GNUNET_TRANSPORT_PeerIterateCallback is called one
+ * more time with `NULL`. After this, the operation must no longer be
  * explicitly canceled.
  *
  * The #GNUNET_TRANSPORT_monitor_peers_cancel call MUST not be called in the
@@ -771,8 +771,8 @@
  * indicate a change to a validation entry. The information included represent
  * the current state of the validation entry,
  *
- * If the monitoring was called with one_shot=GNUNET_YES, a final callback
- * with peer==NULL and address==NULL is executed.
+ * If the monitoring was called with `one_shot==GNUNET_YES`, a final callback
+ * with `peer==NULL` and `address==NULL` is executed.
  *
  * @param cls closure
  * @param peer peer this update is about,
@@ -1007,7 +1007,6 @@
                                             const struct 
GNUNET_TRANSPORT_SessionInfo *info);
 
 
-
 /**
  * Install a plugin session state monitor callback.  The callback
  * will be notified whenever the session changes.

Modified: gnunet/src/peerinfo-tool/gnunet-peerinfo.c
===================================================================
--- gnunet/src/peerinfo-tool/gnunet-peerinfo.c  2014-12-14 14:54:54 UTC (rev 
34553)
+++ gnunet/src/peerinfo-tool/gnunet-peerinfo.c  2014-12-14 20:52:16 UTC (rev 
34554)
@@ -178,6 +178,16 @@
 static GNUNET_SCHEDULER_TaskIdentifier tt;
 
 /**
+ * Pending #GNUNET_TRANSPORT_get_hello() operation.
+ */
+static struct GNUNET_TRANSPORT_GetHelloHandle *gh;
+
+/**
+ * Connection to transport service.
+ */
+static struct GNUNET_TRANSPORT_Handle *transport;
+
+/**
  * Current iterator context (if active, otherwise NULL).
  */
 static struct GNUNET_PEERINFO_IteratorContext *pic;
@@ -202,7 +212,12 @@
  */
 static struct GNUNET_PEERINFO_AddContext *ac;
 
+/**
+ * Hello of this peer (if initialized).
+ */
+static struct GNUNET_HELLO_Message *my_hello;
 
+
 /**
  * Main state machine that goes over all options and
  * runs the next requested function.
@@ -436,44 +451,23 @@
  * @param err_msg error message
  */
 static void
-dump_my_hello (void *cls,
-               const struct GNUNET_PeerIdentity *peer,
-               const struct GNUNET_HELLO_Message *hello,
-               const char *err_msg)
+dump_my_hello ()
 {
   unsigned int size;
   unsigned int c_addr;
 
-  if (NULL == peer)
-  {
-    pic = NULL;
-    if (NULL != err_msg)
-      FPRINTF (stderr,
-              _("Error in communication with PEERINFO service: %s\n"),
-              err_msg);
-    tt = GNUNET_SCHEDULER_add_now (&state_machine,
-                                   NULL);
-    return;
-  }
-
-  if (NULL == hello)
-  {
-    FPRINTF (stderr,
-             _("Failure: Did not receive %s\n"),
-             "HELLO");
-    return;
-  }
-
-  size = GNUNET_HELLO_size (hello);
+  size = GNUNET_HELLO_size (my_hello);
   if (0 == size)
   {
     FPRINTF (stderr,
              _("Failure: Received invalid %s\n"),
              "HELLO");
-      return;
+    return;
   }
   if (GNUNET_SYSERR ==
-      GNUNET_DISK_fn_write (dump_hello, hello, size,
+      GNUNET_DISK_fn_write (dump_hello,
+                            my_hello,
+                            size,
                             GNUNET_DISK_PERM_USER_READ |
                             GNUNET_DISK_PERM_USER_WRITE |
                             GNUNET_DISK_PERM_GROUP_READ |
@@ -491,7 +485,7 @@
 
   }
   c_addr = 0;
-  GNUNET_HELLO_iterate_addresses (hello,
+  GNUNET_HELLO_iterate_addresses (my_hello,
                                   GNUNET_NO,
                                   count_addr,
                                   &c_addr);
@@ -500,7 +494,7 @@
   {
     FPRINTF (stderr,
              _("Wrote %s HELLO containing %u addresses with %u bytes to file 
`%s'\n"),
-             (GNUNET_YES == GNUNET_HELLO_is_friend_only(hello)) ? 
"friend-only": "public",
+             (GNUNET_YES == GNUNET_HELLO_is_friend_only (my_hello)) ? 
"friend-only": "public",
              c_addr,
              size,
              dump_hello);
@@ -527,6 +521,8 @@
               const struct GNUNET_HELLO_Message *hello,
              const char *err_msg)
 {
+  char *uri;
+
   if (NULL == peer)
   {
     pic = NULL;
@@ -540,8 +536,8 @@
 
   if (NULL == hello)
     return;
-  char *uri = GNUNET_HELLO_compose_uri (hello,
-                                        &GPI_plugins_find);
+  uri = GNUNET_HELLO_compose_uri (hello,
+                                  &GPI_plugins_find);
   if (NULL != uri)
   {
     printf ("%s\n",
@@ -640,6 +636,16 @@
     GNUNET_PEERINFO_iterate_cancel (pic);
     pic = NULL;
   }
+  if (NULL != gh)
+  {
+    GNUNET_TRANSPORT_get_hello_cancel (gh);
+    gh = NULL;
+  }
+  if (NULL != transport)
+  {
+    GNUNET_TRANSPORT_disconnect (transport);
+    transport = NULL;
+  }
   while (NULL != (pc = pc_head))
   {
     GNUNET_CONTAINER_DLL_remove (pc_head,
@@ -664,10 +670,47 @@
     GNUNET_PEERINFO_disconnect (peerinfo);
     peerinfo = NULL;
   }
+  if (NULL != my_hello)
+  {
+    GNUNET_free (my_hello);
+    my_hello = NULL;
+  }
 }
 
 
 /**
+ * Function called with our peer's HELLO message.
+ * Used to obtain our peer's public key.
+ *
+ * @param cls NULL
+ * @param hello the HELLO message
+ */
+static void
+hello_callback (void *cls,
+                const struct GNUNET_MessageHeader *hello)
+{
+  if (NULL == hello)
+  {
+    fprintf (stderr,
+             _("Failed to get my own HELLO from this peer!\n"));
+    GNUNET_SCHEDULER_shutdown ();
+    return;
+  }
+  my_hello = (struct GNUNET_HELLO_Message *) GNUNET_copy_message (hello);
+  GNUNET_assert (GNUNET_OK ==
+                 GNUNET_HELLO_get_id (hello,
+                                      &my_peer_identity));
+  GNUNET_TRANSPORT_get_hello_cancel (gh);
+  gh = NULL;
+  GNUNET_TRANSPORT_disconnect (transport);
+  transport = NULL;
+  if (NULL != dump_hello)
+    dump_my_hello ();
+  tt = GNUNET_SCHEDULER_add_now (&state_machine, NULL);
+}
+
+
+/**
  * Function called with the result of the check if the PEERINFO
  * service is running.
  *
@@ -700,33 +743,18 @@
        (GNUNET_YES == get_uri) ||
        (NULL != dump_hello) )
   {
-    /* load private key */
-    if (GNUNET_OK !=
-        GNUNET_CONFIGURATION_get_value_filename (cfg,
-                                                 "PEER",
-                                                 "PRIVATE_KEY",
-                                                 &fn))
-    {
-      GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
-                                 "PEER",
-                                 "PRIVATE_KEY");
-      return;
-    }
-    if (NULL == (priv = GNUNET_CRYPTO_eddsa_key_create_from_file (fn)))
-    {
-      FPRINTF (stderr,
-               _("Loading hostkey from `%s' failed.\n"),
-               fn);
-      GNUNET_free (fn);
-      return;
-    }
-    GNUNET_free (fn);
-    GNUNET_CRYPTO_eddsa_key_get_public (priv,
-                                        &my_peer_identity.public_key);
-    GNUNET_free (priv);
+    transport = GNUNET_TRANSPORT_connect (cfg,
+                                          NULL,
+                                          NULL,
+                                          NULL, NULL, NULL);
+    gh = GNUNET_TRANSPORT_get_hello (transport,
+                                     &hello_callback,
+                                     NULL);
   }
-
-  tt = GNUNET_SCHEDULER_add_now (&state_machine, NULL);
+  else
+  {
+    tt = GNUNET_SCHEDULER_add_now (&state_machine, NULL);
+  }
   GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL,
                                 &shutdown_task,
                                 NULL);
@@ -827,14 +855,6 @@
                                    &print_my_uri, NULL);
     get_uri = GNUNET_NO;
   }
-  else if (NULL != dump_hello)
-  {
-    pic = GNUNET_PEERINFO_iterate (peerinfo,
-                                   include_friend_only,
-                                   &my_peer_identity,
-                                  TIMEOUT,
-                                   &dump_my_hello, NULL);
-  }
   else if (GNUNET_YES == default_operation)
   {
     /* default operation list all */
@@ -843,8 +863,8 @@
     tt = GNUNET_SCHEDULER_add_now (&state_machine, NULL);
   }
   else
-    {
-      GNUNET_SCHEDULER_shutdown ();
+  {
+    GNUNET_SCHEDULER_shutdown ();
   }
   default_operation = GNUNET_NO;
 }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]