gnunet-svn
[Top][All Lists]
Advanced

[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
  */




reply via email to

[Prev in Thread] Current Thread [Next in Thread]