aboutsummaryrefslogtreecommitdiff
path: root/src/transport/plugin_transport_http_client.c
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2012-09-24 10:05:34 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2012-09-24 10:05:34 +0000
commiteed802215e87d2ca5d136443a4f7312ac284a628 (patch)
treef064a5bec643c43a480ecae6cc16f210160839d7 /src/transport/plugin_transport_http_client.c
parentcf36dd20e6058dc01e70911fe4ba82b2c5b6034b (diff)
downloadgnunet-eed802215e87d2ca5d136443a4f7312ac284a628.tar.gz
gnunet-eed802215e87d2ca5d136443a4f7312ac284a628.zip
hunting bugs
Diffstat (limited to 'src/transport/plugin_transport_http_client.c')
-rw-r--r--src/transport/plugin_transport_http_client.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/transport/plugin_transport_http_client.c b/src/transport/plugin_transport_http_client.c
index 7dbbe7b9f..9f4ac94a8 100644
--- a/src/transport/plugin_transport_http_client.c
+++ b/src/transport/plugin_transport_http_client.c
@@ -170,6 +170,11 @@ struct Session
170 int put_tmp_disconnected; 170 int put_tmp_disconnected;
171 171
172 /** 172 /**
173 * We received data to send while disconnecting, reconnect immediately
174 */
175 int put_reconnect_required;
176
177 /**
173 * Client receive handle 178 * Client receive handle
174 */ 179 */
175 void *client_get; 180 void *client_get;
@@ -468,6 +473,7 @@ http_client_plugin_send (void *cls,
468 if (GNUNET_YES == s->put_tmp_disconnecting) 473 if (GNUNET_YES == s->put_tmp_disconnecting)
469 { 474 {
470 /* PUT connection is currently getting disconnected */ 475 /* PUT connection is currently getting disconnected */
476 s->put_reconnect_required = GNUNET_YES;
471 GNUNET_break (0); 477 GNUNET_break (0);
472 return msgbuf_size; 478 return msgbuf_size;
473 } 479 }
@@ -1076,6 +1082,17 @@ client_run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
1076 s->put_tmp_disconnecting = GNUNET_NO; 1082 s->put_tmp_disconnecting = GNUNET_NO;
1077 s->put_tmp_disconnected = GNUNET_YES; 1083 s->put_tmp_disconnected = GNUNET_YES;
1078 s->client_put = NULL; 1084 s->client_put = NULL;
1085
1086 /*
1087 * Handling a rare case:
1088 * plugin_send was called during temporary put disconnect,
1089 * reconnect required after connection was disconnected
1090 */
1091 if (GNUNET_YES == s->put_reconnect_required)
1092 {
1093 s->put_reconnect_required = GNUNET_NO;
1094 client_connect_put(s);
1095 }
1079 } 1096 }
1080 if (easy_h == s->client_get) 1097 if (easy_h == s->client_get)
1081 { 1098 {