gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r18172 - gnunet/src/transport
Date: Wed, 16 Nov 2011 12:02:27 +0100

Author: wachs
Date: 2011-11-16 12:02:27 +0100 (Wed, 16 Nov 2011)
New Revision: 18172

Modified:
   gnunet/src/transport/plugin_transport_http_server.c
Log:
fixing mantis #1906


Modified: gnunet/src/transport/plugin_transport_http_server.c
===================================================================
--- gnunet/src/transport/plugin_transport_http_server.c 2011-11-16 09:39:33 UTC 
(rev 18171)
+++ gnunet/src/transport/plugin_transport_http_server.c 2011-11-16 11:02:27 UTC 
(rev 18172)
@@ -243,9 +243,9 @@
  */
 
 static void
-server_reschedule (struct Plugin *plugin, int now)
+server_reschedule (struct Plugin *plugin, struct MHD_Daemon *server, int now)
 {
-  if (plugin->server_v4 != NULL)
+  if ((server == plugin->server_v4) && (plugin->server_v4 != NULL))
   {
     if (plugin->server_v4_task != GNUNET_SCHEDULER_NO_TASK)
     {
@@ -255,7 +255,7 @@
     plugin->server_v4_task = server_schedule (plugin, plugin->server_v4, now);
   }
 
-  if (plugin->server_v6 != NULL)
+  if ((server == plugin->server_v6) && (plugin->server_v6 != NULL))
   {
     if (plugin->server_v6_task != GNUNET_SCHEDULER_NO_TASK)
     {
@@ -347,7 +347,7 @@
     }
   }
 
-#if VERBOSE_CLIENT
+#if VERBOSE_SERVER
   struct Plugin *plugin = s->plugin;
   GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, plugin->name,
                    "Server: %X: sent %u bytes\n", s, bytes_read);
@@ -536,7 +536,6 @@
     GNUNET_break (0);
     goto error;
   }
-
   s = create_session (plugin, &target, a, a_len, NULL, NULL);
 
   s->inbound = GNUNET_YES;
@@ -575,7 +574,14 @@
                    "Server: Setting timeout for %X to %u sec.\n", sc, to);
 #endif
   MHD_set_connection_option (mhd_connection, MHD_CONNECTION_OPTION_TIMEOUT, 
to);
-  server_reschedule (plugin, GNUNET_NO);
+
+  struct MHD_Daemon * d = NULL;
+  if (s->addrlen == sizeof (struct IPv6HttpAddress))
+    d = plugin->server_v6;
+  if (s->addrlen == sizeof (struct IPv4HttpAddress))
+    d = plugin->server_v4;
+
+  server_reschedule (plugin, d, GNUNET_NO);
 #endif
   return sc;
 }
@@ -732,7 +738,12 @@
           MHD_set_connection_option (t->mhd_conn, 
MHD_CONNECTION_OPTION_TIMEOUT,
                                      to);
         }
-        server_reschedule (plugin, GNUNET_NO);
+        struct MHD_Daemon *d = NULL;
+        if (s->addrlen == sizeof (struct IPv6HttpAddress))
+          d = plugin->server_v6;
+        if (s->addrlen == sizeof (struct IPv4HttpAddress))
+          d = plugin->server_v4;
+        server_reschedule (plugin, d, GNUNET_NO);
 #endif
         (*upload_data_size) = 0;
       }
@@ -827,7 +838,12 @@
   }
   plugin->cur_connections--;
 
-  server_reschedule (plugin, GNUNET_NO);
+  struct MHD_Daemon *d = NULL;
+  if (s->addrlen == sizeof (struct IPv6HttpAddress))
+    d = plugin->server_v6;
+  if (s->addrlen == sizeof (struct IPv4HttpAddress))
+    d = plugin->server_v4;
+  server_reschedule (plugin, d, GNUNET_NO);
 
   if ((s->server_send == NULL) && (s->server_recv == NULL))
   {
@@ -875,7 +891,17 @@
 server_send (struct Session *s, struct HTTP_Message *msg)
 {
   GNUNET_CONTAINER_DLL_insert (s->msg_head, s->msg_tail, msg);
-  server_reschedule (s->plugin, GNUNET_YES);
+
+  if (s->addrlen == sizeof (struct IPv4HttpAddress))
+  {
+    server_reschedule (s->plugin, s->plugin->server_v4 , GNUNET_YES);
+  }
+  else if (s->addrlen == sizeof (struct IPv6HttpAddress))
+  {
+    server_reschedule (s->plugin, s->plugin->server_v6 , GNUNET_YES);
+  }
+  else
+    return GNUNET_SYSERR;
   return GNUNET_OK;
 }
 
@@ -1142,6 +1168,8 @@
                      plugin->name, plugin->port);
     return GNUNET_SYSERR;
   }
+  server_reschedule (plugin, plugin->server_v4, GNUNET_NO);
+
   if ((plugin->ipv6 == GNUNET_YES) && (plugin->server_v6 == NULL))
   {
     GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, plugin->name,
@@ -1149,8 +1177,8 @@
                      plugin->name, plugin->port);
     return GNUNET_SYSERR;
   }
+  server_reschedule (plugin, plugin->server_v6, GNUNET_NO);
 
-  server_reschedule (plugin, GNUNET_NO);
 
 #if DEBUG_HTTP
   GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,




reply via email to

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