diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2012-09-24 10:05:34 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2012-09-24 10:05:34 +0000 |
commit | eed802215e87d2ca5d136443a4f7312ac284a628 (patch) | |
tree | f064a5bec643c43a480ecae6cc16f210160839d7 /src/transport/plugin_transport_http_client.c | |
parent | cf36dd20e6058dc01e70911fe4ba82b2c5b6034b (diff) | |
download | gnunet-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.c | 17 |
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 | { |