gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r28979 - gnunet/src/transport


From: gnunet
Subject: [GNUnet-SVN] r28979 - gnunet/src/transport
Date: Wed, 4 Sep 2013 11:41:55 +0200

Author: wachs
Date: 2013-09-04 11:41:55 +0200 (Wed, 04 Sep 2013)
New Revision: 28979

Modified:
   gnunet/src/transport/plugin_transport_http_server.c
Log:
mhd is failing to bind both IPv4 and IPv6 -> restructured http plugin to no 
fail if one fails


Modified: gnunet/src/transport/plugin_transport_http_server.c
===================================================================
--- gnunet/src/transport/plugin_transport_http_server.c 2013-09-04 08:00:17 UTC 
(rev 28978)
+++ gnunet/src/transport/plugin_transport_http_server.c 2013-09-04 09:41:55 UTC 
(rev 28979)
@@ -2006,6 +2006,7 @@
 server_start (struct HTTP_Server_Plugin *plugin)
 {
   unsigned int timeout;
+  char *msg;
   GNUNET_assert (NULL != plugin);
 
 #if BUILD_HTTPS
@@ -2029,22 +2030,23 @@
                    "MHD cannot set timeout per connection! Default time out %u 
sec.\n",
                    timeout);
 #endif
-  plugin->server_v4 = NULL;
-  if (plugin->use_ipv4 == GNUNET_YES)
+
+  plugin->server_v6 = NULL;
+  if (plugin->use_ipv6 == GNUNET_YES)
   {
-    plugin->server_v4 = MHD_start_daemon (
+    plugin->server_v6 = MHD_start_daemon (
 #if VERBOSE_SERVER
                                            MHD_USE_DEBUG |
 #endif
 #if BUILD_HTTPS
                                            MHD_USE_SSL |
 #endif
-                                           MHD_NO_FLAG, plugin->port,
+                                           MHD_USE_IPv6, plugin->port,
                                            &server_accept_cb, plugin,
                                            &server_access_cb, plugin,
                                            MHD_OPTION_SOCK_ADDR,
-                                           (struct sockaddr_in *)
-                                           plugin->server_addr_v4,
+                                           (struct sockaddr_in6 *)
+                                           plugin->server_addr_v6,
                                            MHD_OPTION_CONNECTION_LIMIT,
                                            (unsigned int)
                                            plugin->max_connections,
@@ -2065,23 +2067,32 @@
                                            &server_disconnect_cb, plugin,
                                            MHD_OPTION_EXTERNAL_LOGGER,
                                            server_log, NULL, MHD_OPTION_END);
+    if (plugin->server_v6 == NULL)
+    {
+      GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, plugin->name,
+                       "Failed to start %s IPv6 server component on port %u\n",
+                       plugin->name, plugin->port);
+    }
+    else
+       server_reschedule (plugin, plugin->server_v6, GNUNET_NO);
   }
-  plugin->server_v6 = NULL;
-  if (plugin->use_ipv6 == GNUNET_YES)
+
+  plugin->server_v4 = NULL;
+  if (plugin->use_ipv4 == GNUNET_YES)
   {
-    plugin->server_v6 = MHD_start_daemon (
+    plugin->server_v4 = MHD_start_daemon (
 #if VERBOSE_SERVER
                                            MHD_USE_DEBUG |
 #endif
 #if BUILD_HTTPS
                                            MHD_USE_SSL |
 #endif
-                                           MHD_USE_IPv6, plugin->port,
+                                           MHD_NO_FLAG, plugin->port,
                                            &server_accept_cb, plugin,
                                            &server_access_cb, plugin,
                                            MHD_OPTION_SOCK_ADDR,
-                                           (struct sockaddr_in6 *)
-                                           plugin->server_addr_v6,
+                                           (struct sockaddr_in *)
+                                           plugin->server_addr_v4,
                                            MHD_OPTION_CONNECTION_LIMIT,
                                            (unsigned int)
                                            plugin->max_connections,
@@ -2102,29 +2113,34 @@
                                            &server_disconnect_cb, plugin,
                                            MHD_OPTION_EXTERNAL_LOGGER,
                                            server_log, NULL, MHD_OPTION_END);
-
+    if (plugin->server_v4 == NULL)
+    {
+      GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, plugin->name,
+                       "Failed to start %s IPv4 server component on port %u\n",
+                       plugin->name, plugin->port);
+    }
+    else
+       server_reschedule (plugin, plugin->server_v4, GNUNET_NO);
   }
 
-  if ((plugin->use_ipv4 == GNUNET_YES) && (plugin->server_v4 == NULL))
+       msg = "No";
+  if ((plugin->server_v6 == NULL) && (plugin->server_v6 == NULL))
   {
     GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, plugin->name,
-                     "Failed to start %s IPv4 server component on port %u\n",
-                     plugin->name, plugin->port);
+                     "%s %s server component started on port %u\n",
+                     msg, plugin->name, plugin->port);
     return GNUNET_SYSERR;
   }
-  server_reschedule (plugin, plugin->server_v4, GNUNET_NO);
+  else if ((plugin->server_v6 != NULL) && (plugin->server_v6 != NULL))
+       msg = "IPv4 and IPv6";
+  else if (plugin->server_v6 != NULL)
+       msg = "IPv6";
+  else if (plugin->server_v4 != NULL)
+       msg = "IPv4";
+  GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
+                   "%s %s server component started on port %u\n",
+                   msg, plugin->name, plugin->port);
 
-  if ((plugin->use_ipv6 == GNUNET_YES) && (plugin->server_v6 == NULL))
-  {
-    GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, plugin->name,
-                     "Failed to start %s IPv6 server component on port %u\n",
-                     plugin->name, plugin->port);
-    return GNUNET_SYSERR;
-  }
-  server_reschedule (plugin, plugin->server_v6, GNUNET_NO);
-  GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
-                   "%s server component started on port %u\n", plugin->name,
-                   plugin->port);
   return GNUNET_OK;
 }
 
@@ -3124,7 +3140,6 @@
       LIBGNUNET_PLUGIN_TRANSPORT_DONE (api);
       return NULL;
   }
-
   return api;
 }
 




reply via email to

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