Start implementation of some functions.
[oweals/gnunet.git] / src / dht / gnunet-service-dht.c
index 3e0f3c8d90733fe2296761207a9d1a7a5f23420d..9df116b472ec882c0f520a463eb902aa8d1536e6 100644 (file)
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet.
-     (C) 2009, 2010, 2011 Christian Grothoff (and other contributing authors)
+     Copyright (C) 2009, 2010, 2011 Christian Grothoff (and other contributing authors)
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -66,12 +66,16 @@ struct GNUNET_MessageHeader *GDS_my_hello;
  */
 struct GNUNET_TRANSPORT_Handle *GDS_transport_handle;
 
-
 /**
  * Handle to get our current HELLO.
  */
 static struct GNUNET_TRANSPORT_GetHelloHandle *ghh;
 
+/**
+ * Hello address expiration
+ */
+struct GNUNET_TIME_Relative hello_expiration;
+
 
 /**
  * Receive the HELLO from transport service, free current and replace
@@ -81,8 +85,7 @@ static struct GNUNET_TRANSPORT_GetHelloHandle *ghh;
  * @param message HELLO message of peer
  */
 static void
-process_hello (void *cls, 
-              const struct GNUNET_MessageHeader *message)
+process_hello (void *cls, const struct GNUNET_MessageHeader *message)
 {
   GNUNET_assert (message != NULL);
   GNUNET_free_non_null (GDS_my_hello);
@@ -142,6 +145,11 @@ run (void *cls, struct GNUNET_SERVER_Handle *server,
      const struct GNUNET_CONFIGURATION_Handle *c)
 {
   GDS_cfg = c;
+  if (GNUNET_OK !=
+      GNUNET_CONFIGURATION_get_value_time (c, "transport", "HELLO_EXPIRATION", &hello_expiration))
+  {
+    hello_expiration = GNUNET_CONSTANTS_HELLO_ADDRESS_EXPIRATION;
+  }
   GDS_block_context = GNUNET_BLOCK_context_create (GDS_cfg);
   GDS_stats = GNUNET_STATISTICS_create ("dht", GDS_cfg);
   GDS_ROUTING_init ();
@@ -149,24 +157,22 @@ run (void *cls, struct GNUNET_SERVER_Handle *server,
   GDS_DATACACHE_init ();
   GDS_HELLO_init ();
   GDS_CLIENTS_init (server);
-  if (GNUNET_OK !=
-      GDS_NEIGHBOURS_init ())
-    {
-      shutdown_task (NULL, NULL);
-      return;
-    }
-  GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL,
-                               &shutdown_task, NULL);
+  if (GNUNET_OK != GDS_NEIGHBOURS_init ())
+  {
+    shutdown_task (NULL, NULL);
+    return;
+  }
+  GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, &shutdown_task,
+                                NULL);
   GDS_transport_handle =
-    GNUNET_TRANSPORT_connect (GDS_cfg, NULL, NULL, NULL, NULL, NULL);
+      GNUNET_TRANSPORT_connect (GDS_cfg, NULL, NULL, NULL, NULL, NULL);
   if (GDS_transport_handle == NULL)
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                 _("Failed to connect to transport service!\n"));
-      return;
-    }
-  ghh = GNUNET_TRANSPORT_get_hello (GDS_transport_handle, 
-                                   &process_hello, NULL);
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+                _("Failed to connect to transport service!\n"));
+    return;
+  }
+  ghh = GNUNET_TRANSPORT_get_hello (GDS_transport_handle, &process_hello, NULL);
 }
 
 
@@ -181,12 +187,11 @@ int
 main (int argc, char *const *argv)
 {
   int ret;
-  
-  ret = (GNUNET_OK ==
-        GNUNET_SERVICE_run (argc, argv, 
-                            "dht", 
-                            GNUNET_SERVICE_OPTION_NONE,
-                            &run, NULL)) ? 0 : 1;
+
+  ret =
+      (GNUNET_OK ==
+       GNUNET_SERVICE_run (argc, argv, "dht", GNUNET_SERVICE_OPTION_NONE, &run,
+                           NULL)) ? 0 : 1;
   GDS_CLIENTS_done ();
   return ret;
 }