[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r16696 - gnunet/src/transport
From: |
gnunet |
Subject: |
[GNUnet-SVN] r16696 - gnunet/src/transport |
Date: |
Sat, 3 Sep 2011 11:28:25 +0200 |
Author: grothoff
Date: 2011-09-03 11:28:25 +0200 (Sat, 03 Sep 2011)
New Revision: 16696
Modified:
gnunet/src/transport/gnunet-service-transport.c
Log:
LRN:
A bit less dirty transport crash fix
Basically, it now also frees mq before returning. The logic is kinda
complex for such a small thing, but it's either that, or having two
GNUNET_free (mq) statements.
Although maybe you can postpone freeing mq until the end of the
function (see v2 patch).
[this is the v2 patch]
Modified: gnunet/src/transport/gnunet-service-transport.c
===================================================================
--- gnunet/src/transport/gnunet-service-transport.c 2011-09-02 20:03:13 UTC
(rev 16695)
+++ gnunet/src/transport/gnunet-service-transport.c 2011-09-03 09:28:25 UTC
(rev 16696)
@@ -1613,22 +1613,21 @@
mq->specific_address->in_transmit = GNUNET_NO;
}
n = find_neighbour (&mq->neighbour_id);
- if (n == NULL)
+ if (n != NULL)
{
+ if (mq->client != NULL)
+ transmit_send_ok (mq->client, n, target, result);
+ GNUNET_CONTAINER_DLL_remove (n->cont_head, n->cont_tail, mq);
+ if (result == GNUNET_OK)
+ try_transmission_to_peer (n);
+ else if (GNUNET_SCHEDULER_NO_TASK == n->retry_task)
+ n->retry_task = GNUNET_SCHEDULER_add_now (&retry_transmission_task, n);
+ }
+ else
GNUNET_log_from (GNUNET_ERROR_TYPE_WARNING, "transmit_send_continuation",
"Neighbour `%s' no longer exists\n",
GNUNET_i2s (&mq->neighbour_id));
- return;
- }
- if (mq->client != NULL)
- transmit_send_ok (mq->client, n, target, result);
- GNUNET_assert (n != NULL);
- GNUNET_CONTAINER_DLL_remove (n->cont_head, n->cont_tail, mq);
GNUNET_free (mq);
- if (result == GNUNET_OK)
- try_transmission_to_peer (n);
- else if (GNUNET_SCHEDULER_NO_TASK == n->retry_task)
- n->retry_task = GNUNET_SCHEDULER_add_now (&retry_transmission_task, n);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r16696 - gnunet/src/transport,
gnunet <=