[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r13785 - gnunet/src/core
From: |
gnunet |
Subject: |
[GNUnet-SVN] r13785 - gnunet/src/core |
Date: |
Tue, 23 Nov 2010 17:18:19 +0100 |
Author: grothoff
Date: 2010-11-23 17:18:19 +0100 (Tue, 23 Nov 2010)
New Revision: 13785
Modified:
gnunet/src/core/core_api.c
Log:
fix for Nate
Modified: gnunet/src/core/core_api.c
===================================================================
--- gnunet/src/core/core_api.c 2010-11-23 13:38:57 UTC (rev 13784)
+++ gnunet/src/core/core_api.c 2010-11-23 16:18:19 UTC (rev 13785)
@@ -590,14 +590,26 @@
const struct GNUNET_SCHEDULER_TaskContext *tc)
{
struct PeerRecord *pr = cls;
+ struct GNUNET_CORE_Handle *h = pr->ch;
struct GNUNET_CORE_TransmitHandle *th;
-
+
pr->timeout_task = GNUNET_SCHEDULER_NO_TASK;
th = pr->pending_head;
GNUNET_CONTAINER_DLL_remove (pr->pending_head,
pr->pending_tail,
th);
pr->queue_size--;
+ if ( (pr->prev != NULL) ||
+ (pr->next != NULL) ||
+ (pr == h->ready_peer_head) )
+ {
+ /* the request that was 'approved' by core was
+ canceled before it could be transmitted; remove
+ us from the 'ready' list */
+ GNUNET_CONTAINER_DLL_remove (h->ready_peer_head,
+ h->ready_peer_tail,
+ pr);
+ }
#if DEBUG_CORE
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Signalling timeout of request for transmission to CORE
service\n");
@@ -1514,9 +1526,9 @@
/* bound queue size */
if (pr->queue_size == handle->queue_size)
{
- /* find lowest-priority entry */
- minp = pr->pending_head;
- prev = minp->next;
+ /* find lowest-priority entry, but skip the head of the list */
+ minp = pr->pending_head->next;
+ prev = minp;
while (prev != NULL)
{
if (prev->priority < minp->priority)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r13785 - gnunet/src/core,
gnunet <=