[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r13759 - gnunet/src/core
From: |
gnunet |
Subject: |
[GNUnet-SVN] r13759 - gnunet/src/core |
Date: |
Mon, 22 Nov 2010 11:44:06 +0100 |
Author: nevans
Date: 2010-11-22 11:44:06 +0100 (Mon, 22 Nov 2010)
New Revision: 13759
Modified:
gnunet/src/core/core_api.c
Log:
possible fix for CORE_disconnect segfault, GNUNET_break instead of segfault in
other error case (will see if this causes more troubles)
Modified: gnunet/src/core/core_api.c
===================================================================
--- gnunet/src/core/core_api.c 2010-11-22 09:20:22 UTC (rev 13758)
+++ gnunet/src/core/core_api.c 2010-11-22 10:44:06 UTC (rev 13759)
@@ -479,6 +479,9 @@
{
GNUNET_CLIENT_disconnect (h->client, GNUNET_NO);
h->client = NULL;
+ /* FIXME: is this right? GNUNET_CLIENT_disconnect frees all outstanding
transmission handles, so h->cth is invalid! */
+ /* Otherwise a subsequent call to GNUNET_CORE_disconnect tries to cancel
this task!!! */
+ h->cth = NULL;
GNUNET_CONTAINER_multihashmap_iterate (h->peers,
&disconnect_and_free_peer_entry,
h);
@@ -1124,6 +1127,14 @@
"Received notification about transmission readiness to
`%s'.\n",
GNUNET_i2s (&smr->peer));
#endif
+ /* FIXME: pr->pending_head is sometimes NULL here... Safe to just
return? Or does this indicate something is out of sync somewhere else? */
+ if (pr->pending_head == NULL)
+ {
+ GNUNET_break (0);
+ reconnect_later (h);
+ return;
+ }
+
th = pr->pending_head;
if (ntohs (smr->smr_id) != th->smr_id)
{
@@ -1365,7 +1376,7 @@
/**
* Disconnect from the core service. This function can only
* be called *after* all pending 'GNUNET_CORE_notify_transmit_ready'
- * requests have been explicitly cancelled.
+ * requests have been explicitly canceled.
*
* @param handle connection to core to disconnect
*/
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r13759 - gnunet/src/core,
gnunet <=