aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2011-10-23 15:18:48 +0000
committerChristian Grothoff <christian@grothoff.org>2011-10-23 15:18:48 +0000
commit1207885b627afe3bcdb5fafa17a4edf2730882ef (patch)
tree6c9c231aba928a6def475977f42d175cb09cf955
parent4db8b7f55e29c77d107257386de1bf75062caee3 (diff)
downloadgnunet-1207885b627afe3bcdb5fafa17a4edf2730882ef.tar.gz
gnunet-1207885b627afe3bcdb5fafa17a4edf2730882ef.zip
Adding FIXMEs: if delay is FOREVER, session should be terminated
-rw-r--r--src/transport/plugin_transport_http.c1
-rw-r--r--src/transport/plugin_transport_http_client.c6
-rw-r--r--src/transport/plugin_transport_http_server.c7
-rw-r--r--src/transport/plugin_transport_tcp.c2
-rw-r--r--src/transport/plugin_transport_udp.c4
-rw-r--r--src/transport/plugin_transport_wlan.c17
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
251struct GNUNET_TIME_Relative 252struct GNUNET_TIME_Relative
252http_plugin_receive (void *cls, const struct GNUNET_PeerIdentity * peer, 253http_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/**