return GNUNET_OK;
}
+
struct GNUNET_TIME_Relative
http_plugin_receive (void *cls, const struct GNUNET_PeerIdentity * peer,
const struct GNUNET_MessageHeader * message,
struct GNUNET_TIME_Relative delay;
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);
+ if (delay.rel_value == GNUNET_TIME_UNIT_FOREVER_REL.rel_value)
+ {
+ // FIXME: terminate connection!
+ }
+ s->next_receive = GNUNET_TIME_relative_to_absolute (delay);
if (GNUNET_TIME_absolute_get().abs_value < s->next_receive.abs_value)
{
struct GNUNET_TIME_Relative delay;
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);
+ if (delay.rel_value == GNUNET_TIME_UNIT_FOREVER_REL.rel_value)
+ {
+ // FIXME: terminate connection!
+ }
+ s->next_receive = GNUNET_TIME_relative_to_absolute (delay);
if (delay.rel_value > 0)
{
NULL, 0);
if (delay.rel_value == 0)
GNUNET_SERVER_receive_done (session->client, GNUNET_OK);
+ else if (delay.rel_value == GNUNET_TIME_UNIT_FOREVER_REL.rel_value)
+ GNUNET_SERVER_receive_done (session->client, GNUNET_SYSERR);
else
session->receive_delay_task =
GNUNET_SCHEDULER_add_delayed (delay, &delayed_done, session);
"Giving Session %X %s to transport\n", si->session, GNUNET_i2s(&si->session->target));
delay = plugin->env->receive (plugin->env->cls, &si->sender, hdr, &distance, 1, si->session,
si->arg, si->args);
+ if (delay.rel_value == GNUNET_TIME_UNIT_FOREVER_REL.rel_value)
+ {
+ // FIXME: terminate session!
+ }
si->session->flow_delay_for_other_peer = delay;
}
GNUNET_assert (cls != NULL);
struct Session *session = (struct Session *) client;
struct Plugin *plugin = (struct Plugin *) cls;
-
+ struct GNUNET_TIME_Relative delay;
struct GNUNET_ATS_Information distance;
distance.type = htonl (GNUNET_ATS_QUALITY_NET_DISTANCE);
htons (hdr->size));
#endif
- plugin->env->receive (plugin->env->cls, &(session->target), hdr,
- (const struct GNUNET_ATS_Information *)
- &distance, 1, session,
- (const char *) &session->mac->addr,
- sizeof (session->mac->addr));
+ delay = plugin->env->receive (plugin->env->cls, &(session->target), hdr,
+ (const struct GNUNET_ATS_Information *)
+ &distance, 1, session,
+ (const char *) &session->mac->addr,
+ sizeof (session->mac->addr));
+ if (delay.rel_value == GNUNET_TIME_UNIT_FOREVER_REL.rel_value)
+ {
+ // FIXME: terminate session!
+ }
+
}
/**