[Top][All Lists]
[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;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r21168 - gnunet/src/transport,
gnunet <=