-/**
- * How long until we give up on transmitting the message?
- */
-#define TIMEOUT_TRANSMIT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 60)
-
-#define MTYPE 12345
-
-static struct PeerContext p1;
-
-static struct PeerContext p2;
-
-static int ok;
-
-static int is_tcp;
-
-static GNUNET_SCHEDULER_TaskIdentifier die_task;
-
-static GNUNET_SCHEDULER_TaskIdentifier tct;
-
-
-#if VERBOSE
-#define OKPP do { ok++; fprintf (stderr, "Now at stage %u at %s:%u\n", ok, __FILE__, __LINE__); } while (0)
-#else
-#define OKPP do { ok++; } while (0)
-#endif
-
-
-
-static void
-stop_arm (struct PeerContext *p)
-{
-#if START_ARM
- if (NULL != p->arm_proc)
- {
- if (0 != GNUNET_OS_process_kill (p->arm_proc, SIGTERM))
- GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "kill");
- GNUNET_OS_process_wait (p->arm_proc);
- GNUNET_OS_process_close (p->arm_proc);
- p->arm_proc = NULL;
- }
-#endif
- GNUNET_CONFIGURATION_destroy (p->cfg);
-}
-
-
-
-
-static void
-exchange_hello_last (void *cls,
- const struct GNUNET_MessageHeader *message)
-{
- struct PeerContext *me = cls;
-
- GNUNET_assert (message != NULL);
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Exchanging HELLO of size %d with peer (%s)!\n",
- (int) GNUNET_HELLO_size((const struct GNUNET_HELLO_Message *)message),
- GNUNET_i2s (&me->id));
- GNUNET_assert (GNUNET_OK ==
- GNUNET_HELLO_get_id ((const struct GNUNET_HELLO_Message *)
- message, &me->id));
- GNUNET_TRANSPORT_offer_hello (p1.th, message, NULL, NULL);
-}
-
-
-static void
-exchange_hello (void *cls,
- const struct GNUNET_MessageHeader *message)
-{
- struct PeerContext *me = cls;
-
- GNUNET_assert (message != NULL);
- GNUNET_assert (GNUNET_OK ==
- GNUNET_HELLO_get_id ((const struct GNUNET_HELLO_Message *)
- message, &me->id));
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Exchanging HELLO of size %d from peer %s!\n",
- (int) GNUNET_HELLO_size((const struct GNUNET_HELLO_Message *)message),
- GNUNET_i2s (&me->id));
- GNUNET_TRANSPORT_offer_hello (p2.th, message, NULL, NULL);
-}
-
-
-static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Disconnecting from transports!\n");
- GNUNET_break (0);
- die_task = GNUNET_SCHEDULER_NO_TASK;
- GNUNET_TRANSPORT_get_hello_cancel (p2.th, &exchange_hello_last, &p2);
- GNUNET_TRANSPORT_get_hello_cancel (p1.th, &exchange_hello, &p1);
- GNUNET_TRANSPORT_disconnect (p1.th);
- GNUNET_TRANSPORT_disconnect (p2.th);
- if (GNUNET_SCHEDULER_NO_TASK != tct)
- {
- GNUNET_SCHEDULER_cancel (tct);
- tct = GNUNET_SCHEDULER_NO_TASK;
- }
- ok = 1;
-}
-
-static void
-end_normally (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
- ok = 60;
- die_task = GNUNET_SCHEDULER_NO_TASK;
- GNUNET_TRANSPORT_get_hello_cancel (p2.th, &exchange_hello_last, &p2);
- GNUNET_TRANSPORT_get_hello_cancel (p1.th, &exchange_hello, &p1);
- GNUNET_TRANSPORT_disconnect (p1.th);
- GNUNET_TRANSPORT_disconnect (p2.th);
- if (GNUNET_SCHEDULER_NO_TASK != tct)
- {
- GNUNET_SCHEDULER_cancel (tct);
- tct = GNUNET_SCHEDULER_NO_TASK;
- }
- ok = 0;
-}