+static int phase = 0;
+
+static void
+arm_stop_cb (void *cls,
+ enum GNUNET_ARM_RequestStatus status,
+ const char *servicename,
+ enum GNUNET_ARM_Result result)
+{
+ /* (6), a stop request should be sent to ARM successfully */
+ /* ARM should report that it is stopping */
+ GNUNET_break (status == GNUNET_ARM_REQUEST_SENT_OK);
+ GNUNET_break (result == GNUNET_ARM_RESULT_STOPPED);
+ GNUNET_break (phase == 6);
+ phase++;
+ LOG ("Sent 'STOP' request for arm to ARM %s\n", (status == GNUNET_ARM_REQUEST_SENT_OK) ? "successfully" : "unsuccessfully");
+}
+
+
+static void
+resolver_stop_cb (void *cls,
+ enum GNUNET_ARM_RequestStatus status,
+ const char *servicename, enum GNUNET_ARM_Result result)
+{
+ /* (5), a stop request should be sent to ARM successfully.
+ * ARM should report that resolver is stopped.
+ */
+ GNUNET_break (status == GNUNET_ARM_REQUEST_SENT_OK);
+ GNUNET_break (result == GNUNET_ARM_RESULT_STOPPED);
+ GNUNET_break (phase == 5);
+ LOG ("Sent 'STOP' request for resolver to ARM %s\n", (status == GNUNET_ARM_REQUEST_SENT_OK) ? "successfully" : "unsuccessfully");
+ phase++;
+#if START_ARM
+ GNUNET_ARM_request_service_stop (arm, "arm", TIMEOUT, arm_stop_cb, NULL);
+#else
+ arm_stop_cb (NULL, GNUNET_ARM_STATUS_SENT_OK, "arm", GNUNET_ARM_SERVICE_STOPPING);
+ arm_conn (NULL, GNUNET_NO);
+#endif
+}
+
+