diff options
author | Christian Grothoff <christian@grothoff.org> | 2011-10-23 15:18:48 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2011-10-23 15:18:48 +0000 |
commit | 1207885b627afe3bcdb5fafa17a4edf2730882ef (patch) | |
tree | 6c9c231aba928a6def475977f42d175cb09cf955 | |
parent | 4db8b7f55e29c77d107257386de1bf75062caee3 (diff) | |
download | gnunet-1207885b627afe3bcdb5fafa17a4edf2730882ef.tar.gz gnunet-1207885b627afe3bcdb5fafa17a4edf2730882ef.zip |
Adding FIXMEs: if delay is FOREVER, session should be terminated
-rw-r--r-- | src/transport/plugin_transport_http.c | 1 | ||||
-rw-r--r-- | src/transport/plugin_transport_http_client.c | 6 | ||||
-rw-r--r-- | src/transport/plugin_transport_http_server.c | 7 | ||||
-rw-r--r-- | src/transport/plugin_transport_tcp.c | 2 | ||||
-rw-r--r-- | src/transport/plugin_transport_udp.c | 4 | ||||
-rw-r--r-- | src/transport/plugin_transport_wlan.c | 17 |
6 files changed, 28 insertions, 9 deletions
diff --git a/src/transport/plugin_transport_http.c b/src/transport/plugin_transport_http.c index 784dd3002..430d13330 100644 --- a/src/transport/plugin_transport_http.c +++ b/src/transport/plugin_transport_http.c | |||
@@ -248,6 +248,7 @@ http_plugin_address_suggested (void *cls, const void *addr, size_t addrlen) | |||
248 | return GNUNET_OK; | 248 | return GNUNET_OK; |
249 | } | 249 | } |
250 | 250 | ||
251 | |||
251 | struct GNUNET_TIME_Relative | 252 | struct GNUNET_TIME_Relative |
252 | http_plugin_receive (void *cls, const struct GNUNET_PeerIdentity * peer, | 253 | http_plugin_receive (void *cls, const struct GNUNET_PeerIdentity * peer, |
253 | const struct GNUNET_MessageHeader * message, | 254 | const struct GNUNET_MessageHeader * message, |
diff --git a/src/transport/plugin_transport_http_client.c b/src/transport/plugin_transport_http_client.c index a2024953c..a27997d33 100644 --- a/src/transport/plugin_transport_http_client.c +++ b/src/transport/plugin_transport_http_client.c | |||
@@ -322,7 +322,11 @@ client_receive_mst_cb (void *cls, void *client, | |||
322 | struct GNUNET_TIME_Relative delay; | 322 | struct GNUNET_TIME_Relative delay; |
323 | 323 | ||
324 | delay = http_plugin_receive (s, &s->target, message, s, s->addr, s->addrlen); | 324 | delay = http_plugin_receive (s, &s->target, message, s, s->addr, s->addrlen); |
325 | s->next_receive = GNUNET_TIME_absolute_add(GNUNET_TIME_absolute_get(), delay); | 325 | if (delay.rel_value == GNUNET_TIME_UNIT_FOREVER_REL.rel_value) |
326 | { | ||
327 | // FIXME: terminate connection! | ||
328 | } | ||
329 | s->next_receive = GNUNET_TIME_relative_to_absolute (delay); | ||
326 | 330 | ||
327 | if (GNUNET_TIME_absolute_get().abs_value < s->next_receive.abs_value) | 331 | if (GNUNET_TIME_absolute_get().abs_value < s->next_receive.abs_value) |
328 | { | 332 | { |
diff --git a/src/transport/plugin_transport_http_server.c b/src/transport/plugin_transport_http_server.c index 158532aca..7733c6323 100644 --- a/src/transport/plugin_transport_http_server.c +++ b/src/transport/plugin_transport_http_server.c | |||
@@ -278,8 +278,11 @@ server_receive_mst_cb (void *cls, void *client, | |||
278 | struct GNUNET_TIME_Relative delay; | 278 | struct GNUNET_TIME_Relative delay; |
279 | 279 | ||
280 | delay = http_plugin_receive (s, &s->target, message, s, s->addr, s->addrlen); | 280 | delay = http_plugin_receive (s, &s->target, message, s, s->addr, s->addrlen); |
281 | 281 | if (delay.rel_value == GNUNET_TIME_UNIT_FOREVER_REL.rel_value) | |
282 | s->next_receive = GNUNET_TIME_absolute_add(GNUNET_TIME_absolute_get(), delay); | 282 | { |
283 | // FIXME: terminate connection! | ||
284 | } | ||
285 | s->next_receive = GNUNET_TIME_relative_to_absolute (delay); | ||
283 | 286 | ||
284 | if (delay.rel_value > 0) | 287 | if (delay.rel_value > 0) |
285 | { | 288 | { |
diff --git a/src/transport/plugin_transport_tcp.c b/src/transport/plugin_transport_tcp.c index 5a77f25b5..edbcb0e17 100644 --- a/src/transport/plugin_transport_tcp.c +++ b/src/transport/plugin_transport_tcp.c | |||
@@ -1685,6 +1685,8 @@ delayed_done (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
1685 | NULL, 0); | 1685 | NULL, 0); |
1686 | if (delay.rel_value == 0) | 1686 | if (delay.rel_value == 0) |
1687 | GNUNET_SERVER_receive_done (session->client, GNUNET_OK); | 1687 | GNUNET_SERVER_receive_done (session->client, GNUNET_OK); |
1688 | else if (delay.rel_value == GNUNET_TIME_UNIT_FOREVER_REL.rel_value) | ||
1689 | GNUNET_SERVER_receive_done (session->client, GNUNET_SYSERR); | ||
1688 | else | 1690 | else |
1689 | session->receive_delay_task = | 1691 | session->receive_delay_task = |
1690 | GNUNET_SCHEDULER_add_delayed (delay, &delayed_done, session); | 1692 | GNUNET_SCHEDULER_add_delayed (delay, &delayed_done, session); |
diff --git a/src/transport/plugin_transport_udp.c b/src/transport/plugin_transport_udp.c index 9812416de..077fe38e3 100644 --- a/src/transport/plugin_transport_udp.c +++ b/src/transport/plugin_transport_udp.c | |||
@@ -861,6 +861,10 @@ process_inbound_tokenized_messages (void *cls, void *client, | |||
861 | "Giving Session %X %s to transport\n", si->session, GNUNET_i2s(&si->session->target)); | 861 | "Giving Session %X %s to transport\n", si->session, GNUNET_i2s(&si->session->target)); |
862 | delay = plugin->env->receive (plugin->env->cls, &si->sender, hdr, &distance, 1, si->session, | 862 | delay = plugin->env->receive (plugin->env->cls, &si->sender, hdr, &distance, 1, si->session, |
863 | si->arg, si->args); | 863 | si->arg, si->args); |
864 | if (delay.rel_value == GNUNET_TIME_UNIT_FOREVER_REL.rel_value) | ||
865 | { | ||
866 | // FIXME: terminate session! | ||
867 | } | ||
864 | si->session->flow_delay_for_other_peer = delay; | 868 | si->session->flow_delay_for_other_peer = delay; |
865 | } | 869 | } |
866 | 870 | ||
diff --git a/src/transport/plugin_transport_wlan.c b/src/transport/plugin_transport_wlan.c index b3faf4480..160b5924c 100644 --- a/src/transport/plugin_transport_wlan.c +++ b/src/transport/plugin_transport_wlan.c | |||
@@ -2333,7 +2333,7 @@ process_data (void *cls, void *client, const struct GNUNET_MessageHeader *hdr) | |||
2333 | GNUNET_assert (cls != NULL); | 2333 | GNUNET_assert (cls != NULL); |
2334 | struct Session *session = (struct Session *) client; | 2334 | struct Session *session = (struct Session *) client; |
2335 | struct Plugin *plugin = (struct Plugin *) cls; | 2335 | struct Plugin *plugin = (struct Plugin *) cls; |
2336 | 2336 | struct GNUNET_TIME_Relative delay; | |
2337 | struct GNUNET_ATS_Information distance; | 2337 | struct GNUNET_ATS_Information distance; |
2338 | 2338 | ||
2339 | distance.type = htonl (GNUNET_ATS_QUALITY_NET_DISTANCE); | 2339 | distance.type = htonl (GNUNET_ATS_QUALITY_NET_DISTANCE); |
@@ -2348,11 +2348,16 @@ process_data (void *cls, void *client, const struct GNUNET_MessageHeader *hdr) | |||
2348 | htons (hdr->size)); | 2348 | htons (hdr->size)); |
2349 | #endif | 2349 | #endif |
2350 | 2350 | ||
2351 | plugin->env->receive (plugin->env->cls, &(session->target), hdr, | 2351 | delay = plugin->env->receive (plugin->env->cls, &(session->target), hdr, |
2352 | (const struct GNUNET_ATS_Information *) | 2352 | (const struct GNUNET_ATS_Information *) |
2353 | &distance, 1, session, | 2353 | &distance, 1, session, |
2354 | (const char *) &session->mac->addr, | 2354 | (const char *) &session->mac->addr, |
2355 | sizeof (session->mac->addr)); | 2355 | sizeof (session->mac->addr)); |
2356 | if (delay.rel_value == GNUNET_TIME_UNIT_FOREVER_REL.rel_value) | ||
2357 | { | ||
2358 | // FIXME: terminate session! | ||
2359 | } | ||
2360 | |||
2356 | } | 2361 | } |
2357 | 2362 | ||
2358 | /** | 2363 | /** |