aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2010-11-23 16:18:19 +0000
committerChristian Grothoff <christian@grothoff.org>2010-11-23 16:18:19 +0000
commit2d8268aefde82aa59895dcd55a5eb80bab7ca7a8 (patch)
tree63fd64277b3a318efbeb7f44a66459247c04f207
parent7f47ffbde7e95bb949f340e1a48aa05e73654a3e (diff)
downloadgnunet-2d8268aefde82aa59895dcd55a5eb80bab7ca7a8.tar.gz
gnunet-2d8268aefde82aa59895dcd55a5eb80bab7ca7a8.zip
fix for Nate
-rw-r--r--src/core/core_api.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/core/core_api.c b/src/core/core_api.c
index d77a0b13c..21622852b 100644
--- a/src/core/core_api.c
+++ b/src/core/core_api.c
@@ -590,14 +590,26 @@ transmission_timeout (void *cls,
590 const struct GNUNET_SCHEDULER_TaskContext *tc) 590 const struct GNUNET_SCHEDULER_TaskContext *tc)
591{ 591{
592 struct PeerRecord *pr = cls; 592 struct PeerRecord *pr = cls;
593 struct GNUNET_CORE_Handle *h = pr->ch;
593 struct GNUNET_CORE_TransmitHandle *th; 594 struct GNUNET_CORE_TransmitHandle *th;
594 595
595 pr->timeout_task = GNUNET_SCHEDULER_NO_TASK; 596 pr->timeout_task = GNUNET_SCHEDULER_NO_TASK;
596 th = pr->pending_head; 597 th = pr->pending_head;
597 GNUNET_CONTAINER_DLL_remove (pr->pending_head, 598 GNUNET_CONTAINER_DLL_remove (pr->pending_head,
598 pr->pending_tail, 599 pr->pending_tail,
599 th); 600 th);
600 pr->queue_size--; 601 pr->queue_size--;
602 if ( (pr->prev != NULL) ||
603 (pr->next != NULL) ||
604 (pr == h->ready_peer_head) )
605 {
606 /* the request that was 'approved' by core was
607 canceled before it could be transmitted; remove
608 us from the 'ready' list */
609 GNUNET_CONTAINER_DLL_remove (h->ready_peer_head,
610 h->ready_peer_tail,
611 pr);
612 }
601#if DEBUG_CORE 613#if DEBUG_CORE
602 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 614 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
603 "Signalling timeout of request for transmission to CORE service\n"); 615 "Signalling timeout of request for transmission to CORE service\n");
@@ -1514,9 +1526,9 @@ GNUNET_CORE_notify_transmit_ready (struct GNUNET_CORE_Handle *handle,
1514 /* bound queue size */ 1526 /* bound queue size */
1515 if (pr->queue_size == handle->queue_size) 1527 if (pr->queue_size == handle->queue_size)
1516 { 1528 {
1517 /* find lowest-priority entry */ 1529 /* find lowest-priority entry, but skip the head of the list */
1518 minp = pr->pending_head; 1530 minp = pr->pending_head->next;
1519 prev = minp->next; 1531 prev = minp;
1520 while (prev != NULL) 1532 while (prev != NULL)
1521 { 1533 {
1522 if (prev->priority < minp->priority) 1534 if (prev->priority < minp->priority)