aboutsummaryrefslogtreecommitdiff
path: root/src/transport
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2011-09-27 13:06:14 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2011-09-27 13:06:14 +0000
commitfeb23c882f551a652d6c9ac8cca92811e3681f35 (patch)
treebd51cc86d21a13553e387301a241746a614df717 /src/transport
parentbaf92f5983fcc0515a4c477ceabe0ed593b18d66 (diff)
downloadgnunet-feb23c882f551a652d6c9ac8cca92811e3681f35.tar.gz
gnunet-feb23c882f551a652d6c9ac8cca92811e3681f35.zip
client bw throttling
Diffstat (limited to 'src/transport')
-rw-r--r--src/transport/plugin_transport_http_client.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/transport/plugin_transport_http_client.c b/src/transport/plugin_transport_http_client.c
index 89acb4641..5c4726fcb 100644
--- a/src/transport/plugin_transport_http_client.c
+++ b/src/transport/plugin_transport_http_client.c
@@ -326,11 +326,17 @@ client_wake_up (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
326 struct Session *s = cls; 326 struct Session *s = cls;
327 327
328 s->recv_wakeup_task = GNUNET_SCHEDULER_NO_TASK; 328 s->recv_wakeup_task = GNUNET_SCHEDULER_NO_TASK;
329
329 if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN)) 330 if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
330 return; 331 return;
331 332
333 GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, s->plugin->name,
334 "Client: %X Waking up receive handle\n",
335 s->client_get);
336
332 if (s->client_get != NULL) 337 if (s->client_get != NULL)
333 curl_easy_pause(s->client_get, CURLPAUSE_CONT); 338 curl_easy_pause(s->client_get, CURLPAUSE_CONT);
339
334} 340}
335 341
336/** 342/**
@@ -360,20 +366,20 @@ client_receive (void *stream, size_t size, size_t nmemb, void *cls)
360 now = GNUNET_TIME_absolute_get(); 366 now = GNUNET_TIME_absolute_get();
361 if (now.abs_value < s->next_receive.abs_value) 367 if (now.abs_value < s->next_receive.abs_value)
362 { 368 {
369 struct GNUNET_TIME_Absolute now = GNUNET_TIME_absolute_get();
370 struct GNUNET_TIME_Relative delta = GNUNET_TIME_absolute_get_difference(now, s->next_receive);
363#if DEBUG_CLIENT 371#if DEBUG_CLIENT
364 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 372 GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, plugin->name,
365 "No inbound bandwidth available! Next read was delayed for %llu ms\n", 373 "Client: %X No inbound bandwidth available! Next read was delayed for %llu ms\n",
366 s, GNUNET_TIME_absolute_get_difference(s->next_receive, GNUNET_TIME_absolute_get()).rel_value); 374 s->client_get, delta.rel_value);
367#endif 375#endif
368#if 0
369 if (s->recv_wakeup_task != GNUNET_SCHEDULER_NO_TASK) 376 if (s->recv_wakeup_task != GNUNET_SCHEDULER_NO_TASK)
370 { 377 {
371 GNUNET_SCHEDULER_cancel (s->recv_wakeup_task); 378 GNUNET_SCHEDULER_cancel (s->recv_wakeup_task);
372 s->recv_wakeup_task = GNUNET_SCHEDULER_NO_TASK; 379 s->recv_wakeup_task = GNUNET_SCHEDULER_NO_TASK;
373 } 380 }
374 s->recv_wakeup_task = GNUNET_SCHEDULER_add_delayed( GNUNET_TIME_absolute_get_difference(s->next_receive, now), &client_wake_up, s); 381 s->recv_wakeup_task = GNUNET_SCHEDULER_add_delayed (delta, &client_wake_up, s);
375 return CURLPAUSE_ALL; 382 return CURLPAUSE_ALL;
376#endif
377 } 383 }
378 384
379 385
@@ -384,8 +390,7 @@ client_receive (void *stream, size_t size, size_t nmemb, void *cls)
384 GNUNET_NO); 390 GNUNET_NO);
385 391
386 return len; 392 return len;
387 393 client_wake_up(NULL,NULL);
388 client_wake_up (NULL, NULL);
389} 394}
390 395
391/** 396/**