*/
void *pcic_cls;
+ /**
+ * Pointer to free when we call pcic.
+ */
+ void *pcic_ptr;
+
/**
* Request information ID for the given pcic (needed in case a
* request is cancelled after being submitted to core and a new
if (NULL != (pcic = pr->pcic))
{
pr->pcic = NULL;
+ GNUNET_free_non_null (pr->pcic_ptr);
+ pr->pcic_ptr = NULL;
pcic (pr->pcic_cls,
&pr->peer,
zero,
#endif
/* client decided to send nothing! */
request_next_transmission (pr);
- return 0;
+ GNUNET_free (th);
+ return 0;
}
#if DEBUG_CORE
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
{
GNUNET_break (0);
request_next_transmission (pr);
- return 0;
+ GNUNET_free (th);
+ return 0;
}
ret += sizeof (struct SendMessage);
sm->header.size = htons (ret);
if (NULL == h->status_events)
{
GNUNET_break (0);
+ return;
}
if (msize < sizeof (struct PeerStatusNotifyMessage))
{
}
pcic = pr->pcic;
pr->pcic = NULL;
+ GNUNET_free_non_null (pr->pcic_ptr);
+ pr->pcic_ptr = NULL;
if (pcic != NULL)
pcic (pr->pcic_cls,
&pr->peer,
GNUNET_break (handle->queue_size != 0);
GNUNET_break (pr->queue_size == 1);
GNUNET_free(th);
+#if DEBUG_CORE
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Dropping transmission request: cannot drop queue head and limit is one\n");
+#endif
return NULL;
}
if (priority <= minp->priority)
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Dropping transmission request: priority too low\n");
#endif
+ GNUNET_free(th);
return NULL; /* priority too low */
}
GNUNET_CONTAINER_DLL_remove (pr->pending_head,
&peer->hashPubKey))
{
#if DEBUG_CORE
- GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Peers are already connected!\n");
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
+ "Peers are already connected!\n");
#endif
return NULL;
}
cm);
pr->pcic = info;
pr->pcic_cls = info_cls;
+ pr->pcic_ptr = irc; /* for free'ing irc */
if (h->control_pending_head == cm)
trigger_next_request (h, GNUNET_NO);
return irc;
struct GNUNET_CORE_Handle *h = irc->h;
struct PeerRecord *pr = irc->pr;
+ GNUNET_assert (pr->pcic_ptr == irc);
if (irc->cm != NULL)
{
GNUNET_CONTAINER_DLL_remove (h->control_pending_head,
}
pr->pcic = NULL;
pr->pcic_cls = NULL;
+ pr->pcic_ptr = NULL;
GNUNET_free (irc);
}