authentication of ciphertexts (+ seed)
[oweals/gnunet.git] / src / hostlist / hostlist-server.c
index 055c90bab439c9f82ee8e16520d9efa72510fc9b..87fae74e377cb7496b8e4c4ea7bbdf3514e878d0 100644 (file)
@@ -4,7 +4,7 @@
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
-     by the Free Software Foundation; either version 2, or (at your
+     by the Free Software Foundation; either version 3, or (at your
      option) any later version.
 
      GNUnet is distributed in the hope that it will be useful, but
@@ -62,12 +62,12 @@ static struct GNUNET_STATISTICS_Handle *stats;
 /**
  * Handle to the core service (NULL until we've connected to it).
  */
-struct GNUNET_CORE_Handle *core;
+static struct GNUNET_CORE_Handle *core;
 
 /**
  * Handle to the peerinfo notify service (NULL until we've connected to it).
  */
-struct GNUNET_PEERINFO_NotifyContext *notify;
+static struct GNUNET_PEERINFO_NotifyContext *notify;
 
 /**
  * Our primary task for IPv4.
@@ -109,11 +109,6 @@ struct HostSet
  */
 static int advertising;
 
-/**
- * How many times was the hostlist advertised?
- */
-static uint64_t hostlist_adv_count;
-
 /**
  * Buffer for the hostlist address
  */
@@ -188,8 +183,7 @@ check_has_addr (void *cls,
 static void
 host_processor (void *cls,
                const struct GNUNET_PeerIdentity * peer,
-                const struct GNUNET_HELLO_Message *hello,
-               uint32_t trust)
+                const struct GNUNET_HELLO_Message *hello)
 {
   struct HostSet *results = cls;
   size_t old;
@@ -345,6 +339,8 @@ access_handler_callback (void *cls,
 static size_t
 adv_transmit_ready ( void *cls, size_t size, void *buf)
 {
+  static uint64_t hostlist_adv_count;
+
   size_t transmission_size;
   size_t uri_size; /* Including \0 termination! */
   struct GNUNET_MessageHeader header;
@@ -372,10 +368,10 @@ adv_transmit_ready ( void *cls, size_t size, void *buf)
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               " # Sent advertisement message: %u\n",
               hostlist_adv_count);
-  GNUNET_STATISTICS_set (stats,
-                         gettext_noop("# hostlist advertisements send"),
-                         hostlist_adv_count,
-                         GNUNET_NO);
+  GNUNET_STATISTICS_update (stats,
+                           gettext_noop("# hostlist advertisements send"),
+                           1,
+                           GNUNET_NO);
   return transmission_size;
 }
 
@@ -402,7 +398,7 @@ connect_handler (void *cls,
   if (hostlist_uri == NULL)
     return;
   size = strlen (hostlist_uri) + 1;
-  if (size + sizeof (struct GNUNET_MessageHeader) > GNUNET_SERVER_MAX_MESSAGE_SIZE)
+  if (size + sizeof (struct GNUNET_MessageHeader) >= GNUNET_SERVER_MAX_MESSAGE_SIZE)
     {
       GNUNET_break (0);
       return;
@@ -450,13 +446,11 @@ 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 trust how much we trust the peer (not used)
  */
 static void
 process_notify (void *cls,
                 const struct GNUNET_PeerIdentity *peer,
-                const struct GNUNET_HELLO_Message *hello,
-                uint32_t trust)
+                const struct GNUNET_HELLO_Message *hello)
 {
   struct HostSet *results;
 #if DEBUG_HOSTLIST_SERVER
@@ -467,7 +461,6 @@ process_notify (void *cls,
   GNUNET_assert (peerinfo != NULL);
   pitr = GNUNET_PEERINFO_iterate (peerinfo,
                                   NULL,
-                                  0,
                                   GNUNET_TIME_UNIT_MINUTES,
                                   &host_processor,
                                   results);
@@ -597,11 +590,19 @@ GNUNET_HOSTLIST_server_start (const struct GNUNET_CONFIGURATION_Handle *c,
                  _("Could not access PEERINFO service.  Exiting.\n"));     
       return GNUNET_SYSERR;
     }
-  if (-1 == GNUNET_CONFIGURATION_get_value_number (cfg,
-                                                  "HOSTLIST",
-                                                  "HTTPPORT", 
-                                                  &port))
+  if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_number (cfg,
+                                                         "HOSTLIST",
+                                                         "HTTPPORT", 
+                                                         &port))
     return GNUNET_SYSERR;
+  if ( (port == 0) ||
+       (port > UINT16_MAX) )
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                 _("Invalid port number %llu.  Exiting.\n"),
+                 port);            
+      return GNUNET_SYSERR;
+    }
 
   if ( GNUNET_SYSERR  == GNUNET_CONFIGURATION_get_value_string (cfg,
                                                    "HOSTLIST",