* one to the core.
*
* @param h core handle
+ * @param ignore_currently_down transmit message even if not initialized?
*/
static void
-trigger_next_request (struct GNUNET_CORE_Handle *h);
+trigger_next_request (struct GNUNET_CORE_Handle *h,
+ int ignore_currently_down);
/**
}
if (NULL == (th = pr->pending_head))
{
- trigger_next_request (h);
+ trigger_next_request (h, GNUNET_NO);
return;
}
GNUNET_assert (pr->prev == NULL);
h->pending_tail,
h->pending_tail,
cm);
- trigger_next_request (h);
+ trigger_next_request (h, GNUNET_NO);
}
msize = ntohs (hdr->size);
if (size < msize)
{
- trigger_next_request (h);
+ trigger_next_request (h, GNUNET_NO);
return 0;
}
memcpy (buf, hdr, msize);
if (NULL != cm->cont)
GNUNET_SCHEDULER_add_now (cm->cont, cm->cont_cls);
GNUNET_free (cm);
- trigger_next_request (h);
+ trigger_next_request (h, GNUNET_NO);
return msize;
}
/* now check for 'ready' P2P messages */
th = pr->pending_head;
if (size < th->msize + sizeof (struct SendMessage))
{
- trigger_next_request (h);
+ trigger_next_request (h, GNUNET_NO);
return 0;
}
GNUNET_CONTAINER_DLL_remove (h->ready_peer_head,
* one to the core.
*
* @param h core handle
+ * @param ignore_currently_down transmit message even if not initialized?
*/
static void
-trigger_next_request (struct GNUNET_CORE_Handle *h)
+trigger_next_request (struct GNUNET_CORE_Handle *h,
+ int ignore_currently_down)
{
uint16_t msize;
- if (GNUNET_YES == h->currently_down)
+ if ( (GNUNET_YES == h->currently_down) &&
+ (ignore_currently_down == GNUNET_NO) )
return;
if (NULL != h->cth)
return;
if (GNUNET_YES == h->currently_down)
{
h->currently_down = GNUNET_NO;
- trigger_next_request (h);
+ trigger_next_request (h, GNUNET_NO);
}
if (NULL != (init = h->init))
{
(h->ready_peer_head == pr) );
disconnect_and_free_peer_entry (h, &dnm->peer.hashPubKey, pr);
if (trigger)
- trigger_next_request (h);
+ trigger_next_request (h, GNUNET_NO);
break;
case GNUNET_MESSAGE_TYPE_CORE_NOTIFY_STATUS_CHANGE:
if (NULL == h->status_events)
GNUNET_CONTAINER_DLL_insert (h->ready_peer_head,
h->ready_peer_tail,
pr);
- trigger_next_request (h);
+ trigger_next_request (h, GNUNET_NO);
break;
case GNUNET_MESSAGE_TYPE_CORE_CONFIGURATION_INFO:
if (ntohs (msg->size) != sizeof (struct ConfigurationInfoMessage))
GNUNET_CONTAINER_DLL_insert (h->pending_head,
h->pending_tail,
cm);
- trigger_next_request (h);
+ trigger_next_request (h, GNUNET_YES);
}
h->outbound_hdr_only = outbound_hdr_only;
h->handlers = handlers;
h->hcnt = 0;
+ h->peers = GNUNET_CONTAINER_multihashmap_create (128);
while (handlers[h->hcnt].callback != NULL)
h->hcnt++;
GNUNET_assert (h->hcnt <
cm->cont = &peer_request_connect_cont;
cm->cont_cls = ret;
if (h->pending_head == cm)
- trigger_next_request (h);
+ trigger_next_request (h, GNUNET_NO);
return ret;
}
#include "gnunet_program_lib.h"
#include "gnunet_scheduler_lib.h"
-#define VERBOSE GNUNET_NO
+#define VERBOSE GNUNET_YES
#define START_ARM GNUNET_YES
static void
stop_arm (struct PeerContext *p)
{
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Stopping peer\n");
#if START_ARM
if (0 != GNUNET_OS_process_kill (p->arm_proc, SIGTERM))
GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "kill");
ok = 1;
GNUNET_PROGRAM_run ((sizeof (argv) / sizeof (char *)) - 1,
argv, "test-core-api-start-only", "nohelp", options, &run, &ok);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Test finished\n");
stop_arm (&p1);
stop_arm (&p2);
return ok;