gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r21168 - gnunet/src/transport
Date: Thu, 26 Apr 2012 13:37:50 +0200

Author: wachs
Date: 2012-04-26 13:37:50 +0200 (Thu, 26 Apr 2012)
New Revision: 21168

Modified:
   gnunet/src/transport/plugin_transport_http.c
   gnunet/src/transport/plugin_transport_http_client.c
   gnunet/src/transport/plugin_transport_http_server.c
Log:
- fix for http


Modified: gnunet/src/transport/plugin_transport_http.c
===================================================================
--- gnunet/src/transport/plugin_transport_http.c        2012-04-26 11:35:46 UTC 
(rev 21167)
+++ gnunet/src/transport/plugin_transport_http.c        2012-04-26 11:37:50 UTC 
(rev 21168)
@@ -532,7 +532,24 @@
   return NULL;
 }
 
+int
+exist_session (struct Plugin *plugin, struct Session *s)
+{
+  struct Session * head;
 
+  GNUNET_assert (NULL != plugin);
+  GNUNET_assert (NULL != s);
+
+  for (head = plugin->head; head != NULL; head = head->next)
+  {
+    if (head == s)
+      return GNUNET_YES;
+  }
+  return GNUNET_NO;
+}
+
+
+
 void
 delete_session (struct Session *s)
 {

Modified: gnunet/src/transport/plugin_transport_http_client.c
===================================================================
--- gnunet/src/transport/plugin_transport_http_client.c 2012-04-26 11:35:46 UTC 
(rev 21167)
+++ gnunet/src/transport/plugin_transport_http_client.c 2012-04-26 11:37:50 UTC 
(rev 21168)
@@ -26,6 +26,8 @@
 
 #include "plugin_transport_http.h"
 
+static struct Plugin * p;
+
 #if VERBOSE_CURL
 /**
  * Function to log curl debug messages with GNUNET_log
@@ -147,6 +149,12 @@
   GNUNET_assert (s != NULL);
   GNUNET_CONTAINER_DLL_insert (s->msg_head, s->msg_tail, msg);
 
+  if (GNUNET_YES != exist_session(p, s))
+  {
+    GNUNET_break (0);
+    return GNUNET_SYSERR;
+  }
+
   if (s->client_put_paused == GNUNET_YES)
   {
 #if VERBOSE_CLIENT
@@ -210,6 +218,13 @@
       GNUNET_assert (CURLE_OK ==
                      curl_easy_getinfo (easy_h, CURLINFO_PRIVATE, &d));
       s = (struct Session *) d;
+
+      if (GNUNET_YES != exist_session(plugin, s))
+      {
+        GNUNET_break (0);
+        return;
+      }
+
       GNUNET_assert (s != NULL);
 
       if (msg->msg == CURLMSG_DONE)
@@ -241,8 +256,12 @@
   struct HTTP_Message *msg;
   struct HTTP_Message *t;
 
+  if (GNUNET_YES != exist_session(plugin, s))
+  {
+    GNUNET_break (0);
+    return GNUNET_SYSERR;
+  }
 
-
   if (s->client_put != NULL)
   {
 #if DEBUG_HTTP
@@ -319,6 +338,12 @@
   struct Session *s = cls;
   struct GNUNET_TIME_Relative delay;
 
+  if (GNUNET_YES != exist_session(p, s))
+  {
+    GNUNET_break (0);
+    return;
+  }
+
   delay = http_plugin_receive (s, &s->target, message, s, s->addr, s->addrlen);
   s->next_receive =
       GNUNET_TIME_absolute_add (GNUNET_TIME_absolute_get (), delay);
@@ -341,6 +366,12 @@
 {
   struct Session *s = cls;
 
+  if (GNUNET_YES != exist_session(p, s))
+  {
+    GNUNET_break (0);
+    return;
+  }
+
   s->recv_wakeup_task = GNUNET_SCHEDULER_NO_TASK;
 
   if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
@@ -371,6 +402,8 @@
   size_t len = size * nmemb;
 
 
+
+
 #if VERBOSE_CLIENT
   struct Plugin *plugin = s->plugin;
 
@@ -429,6 +462,12 @@
   size_t bytes_sent = 0;
   size_t len;
 
+  if (GNUNET_YES != exist_session(plugin, s))
+  {
+    GNUNET_break (0);
+    return GNUNET_SYSERR;
+  }
+
   struct HTTP_Message *msg = s->msg_head;
 
   if (msg == NULL)
@@ -610,6 +649,7 @@
 client_start (struct Plugin *plugin)
 {
   int res = GNUNET_OK;
+  p = plugin;
 
   curl_global_init (CURL_GLOBAL_ALL);
   plugin->client_mh = curl_multi_init ();
@@ -619,7 +659,7 @@
     GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, plugin->name,
                      _
                      ("Could not initialize curl multi handle, failed to start 
%s plugin!\n"),
-                     plugin->name);
+                         plugin->name);
     res = GNUNET_SYSERR;
   }
   return res;
@@ -628,6 +668,7 @@
 void
 client_stop (struct Plugin *plugin)
 {
+  p = NULL;
   if (plugin->client_perform_task != GNUNET_SCHEDULER_NO_TASK)
   {
     GNUNET_SCHEDULER_cancel (plugin->client_perform_task);

Modified: gnunet/src/transport/plugin_transport_http_server.c
===================================================================
--- gnunet/src/transport/plugin_transport_http_server.c 2012-04-26 11:35:46 UTC 
(rev 21167)
+++ gnunet/src/transport/plugin_transport_http_server.c 2012-04-26 11:37:50 UTC 
(rev 21168)
@@ -30,6 +30,8 @@
 #define _RECEIVE 0
 #define _SEND 1
 
+static struct Plugin * p;
+
 struct ServerConnection
 {
   /* _RECV or _SEND */
@@ -279,6 +281,11 @@
                        const struct GNUNET_MessageHeader *message)
 {
   struct Session *s = cls;
+
+  GNUNET_assert (NULL != p);
+  if (GNUNET_NO == exist_session(p, s))
+    return;
+
   struct Plugin *plugin = s->plugin;
   struct GNUNET_TIME_Relative delay;
 
@@ -309,6 +316,9 @@
 server_send_callback (void *cls, uint64_t pos, char *buf, size_t max)
 {
   struct Session *s = cls;
+  GNUNET_assert (NULL != p);
+  if (GNUNET_NO == exist_session(p, s))
+    return 0;
 
   struct HTTP_Message *msg;
   int bytes_read = 0;
@@ -736,6 +746,10 @@
     return;
 
   s = sc->session;
+  GNUNET_assert (NULL != p);
+  if (GNUNET_NO == exist_session(p, s))
+    return;
+
   plugin = s->plugin;
   if (sc->direction == _SEND)
   {
@@ -1018,6 +1032,8 @@
 {
   int res = GNUNET_OK;
   unsigned int timeout;
+  p = plugin;
+  GNUNET_assert (NULL != plugin);
 
 #if BUILD_HTTPS
   res = server_load_certificate (plugin);
@@ -1150,6 +1166,8 @@
   struct Session *s = NULL;
   struct Session *t = NULL;
 
+  p = NULL;
+
   struct MHD_Daemon *server_v4_tmp = plugin->server_v4;
 
   plugin->server_v4 = NULL;




reply via email to

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