social: crashing free() removed.. was it redundant?
[oweals/gnunet.git] / src / social / test_social.c
index 78c58db1424c8fe8a97cdbefed57c0a6ed710f0b..eb32a031fe2c365152bccb65bc6b5885f66c03c9 100644 (file)
@@ -50,7 +50,7 @@ const char *app_id = "test";
 /**
  * Handle for task for timeout termination.
  */
-struct GNUNET_SCHEDULER_Task * end_badly_task;
+struct GNUNET_SCHEDULER_Task *end_badly_task;
 
 const struct GNUNET_CONFIGURATION_Handle *cfg;
 
@@ -149,7 +149,8 @@ enum
 
 
 static void
-schedule_guest_leave (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
+schedule_guest_leave (void *cls);
+
 
 static void
 host_answer_door (void *cls,
@@ -220,7 +221,7 @@ cleanup ()
     hst = NULL;
     hst_plc = NULL;
   }
-  GNUNET_SOCIAL_app_disconnect (app);
+  GNUNET_SOCIAL_app_disconnect (app, NULL, NULL);
   GNUNET_SCHEDULER_shutdown ();
 }
 
@@ -229,10 +230,9 @@ cleanup ()
  * Terminate the test case (failure).
  *
  * @param cls NULL
- * @param tc scheduler context
  */
 static void
-end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+end_badly (void *cls)
 {
   res = 1;
   cleanup ();
@@ -244,10 +244,9 @@ end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
  * Terminate the test case (success).
  *
  * @param cls NULL
- * @param tc scheduler context
  */
 static void
-end_normally (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+end_normally (void *cls)
 {
   res = 0;
   cleanup ();
@@ -268,16 +267,17 @@ end ()
     GNUNET_SCHEDULER_cancel (end_badly_task);
     end_badly_task = NULL;
   }
-  GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_MILLISECONDS,
-                               &end_normally, NULL);
+  GNUNET_SCHEDULER_add_now (&end_normally, NULL);
 }
 
 
 static void
-transmit_resume (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+transmit_resume (void *cls)
 {
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Transmission resumed.\n");
   struct TransmitClosure *tmit = cls;
+
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+             "Transmission resumed.\n");
   if (NULL != tmit->host_ann)
     GNUNET_SOCIAL_host_announce_resume (tmit->host_ann);
   else
@@ -326,7 +326,7 @@ notify_data (void *cls, uint16_t *data_size, void *data)
   tmit->paused = GNUNET_NO;
 
   *data_size = size;
-  memcpy (data, tmit->data[tmit->n], size);
+  GNUNET_memcpy (data, tmit->data[tmit->n], size);
 
   return ++tmit->n < tmit->data_count ? GNUNET_NO : GNUNET_YES;
 }
@@ -342,7 +342,7 @@ host_left ()
 
 
 static void
-schedule_host_leave (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+schedule_host_leave (void *cls)
 {
   test = TEST_HOST_LEAVE;
   GNUNET_SOCIAL_host_leave (hst, NULL, &host_left, NULL);
@@ -358,14 +358,14 @@ host_farewell2 (void *cls,
 {
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
               "Nym left the place again.\n");
-  GNUNET_SCHEDULER_add_now (schedule_host_leave, NULL);
+  GNUNET_SCHEDULER_add_now (&schedule_host_leave, NULL);
 }
 
 
 static void
 host_reconnected (void *cls, int result,
-              const struct GNUNET_CRYPTO_EddsaPublicKey *home_pub_key,
-              uint64_t max_message_id)
+                 const struct GNUNET_CRYPTO_EddsaPublicKey *home_pub_key,
+                 uint64_t max_message_id)
 {
   place_pub_key = *home_pub_key;
   GNUNET_CRYPTO_hash (&place_pub_key, sizeof (place_pub_key), &place_pub_hash);
@@ -376,7 +376,7 @@ host_reconnected (void *cls, int result,
   is_host_reconnected = GNUNET_YES;
   if (GNUNET_YES == is_guest_reconnected)
   {
-    GNUNET_SCHEDULER_add_now (schedule_guest_leave, NULL);
+    GNUNET_SCHEDULER_add_now (&schedule_guest_leave, NULL);
   }
 }
 
@@ -394,17 +394,25 @@ guest_reconnected (void *cls, int result,
   is_guest_reconnected = GNUNET_YES;
   if (GNUNET_YES == is_host_reconnected)
   {
-    GNUNET_SCHEDULER_add_now (schedule_guest_leave, NULL);
+    GNUNET_SCHEDULER_add_now (&schedule_guest_leave, NULL);
   }
 }
 
 
+static void
+app_connected (void *cls)
+{
+  GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+              "App connected: %p\n", cls);
+}
+
+
 static void
 app_recv_host (void *cls,
                struct GNUNET_SOCIAL_HostConnection *hconn,
                struct GNUNET_SOCIAL_Ego *ego,
                const struct GNUNET_CRYPTO_EddsaPublicKey *host_pub_key,
-               enum GNUNET_SOCIAL_PlaceState place_state)
+               enum GNUNET_SOCIAL_AppPlaceState place_state)
 {
   struct GNUNET_HashCode host_pub_hash;
   GNUNET_CRYPTO_hash (host_pub_key, sizeof (*host_pub_key), &host_pub_hash);
@@ -429,7 +437,7 @@ app_recv_guest (void *cls,
                 struct GNUNET_SOCIAL_GuestConnection *gconn,
                 struct GNUNET_SOCIAL_Ego *ego,
                 const struct GNUNET_CRYPTO_EddsaPublicKey *guest_pub_key,
-                enum GNUNET_SOCIAL_PlaceState place_state)
+                enum GNUNET_SOCIAL_AppPlaceState place_state)
 {
   struct GNUNET_HashCode guest_pub_hash;
   GNUNET_CRYPTO_hash (guest_pub_key, sizeof (*guest_pub_key), &guest_pub_hash);
@@ -455,10 +463,11 @@ app_recv_ego (void *cls,
               const struct GNUNET_CRYPTO_EcdsaPublicKey *ego_pub_key,
               const char *name)
 {
+  char *ego_pub_str = GNUNET_CRYPTO_ecdsa_public_key_to_string (ego_pub_key);
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
               "Got app ego notification: %p %s %s\n",
-              ego, name,
-              GNUNET_CRYPTO_ecdsa_public_key_to_string (ego_pub_key));
+              ego, name, ego_pub_str);
+  GNUNET_free (ego_pub_str);
 
   if (NULL != strstr (name, host_name) && TEST_HOST_CREATE == test)
   {
@@ -478,7 +487,7 @@ app_recv_ego (void *cls,
 
 
 static void
-schedule_reconnect (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+schedule_reconnect (void *cls)
 {
   test = TEST_RECONNECT;
 
@@ -487,11 +496,12 @@ schedule_reconnect (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
   hst = NULL;
   gst = NULL;
 
-  GNUNET_SOCIAL_app_disconnect (app);
+  GNUNET_SOCIAL_app_disconnect (app, NULL, NULL);
   app = GNUNET_SOCIAL_app_connect (cfg, app_id,
                                    app_recv_ego,
                                    app_recv_host,
                                    app_recv_guest,
+                                   app_connected,
                                    NULL);
 }
 
@@ -501,8 +511,8 @@ host_recv_zone_add_place_result (void *cls, int64_t result,
                                  const void *data, uint16_t data_size)
 {
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-              "Test #%u: Zone add place result: %d (%.*s).\n",
-              test, result, data_size, data);
+              "Test #%u: Zone add place result: %" PRId64 " (%.*s).\n",
+              test, result, data_size, (const char *) data);
   GNUNET_assert (GNUNET_YES == result);
 
   GNUNET_assert (GNUNET_YES == is_guest_nym_added);
@@ -568,7 +578,7 @@ guest_leave()
 
   struct GNUNET_PSYC_Environment *env = GNUNET_PSYC_env_create ();
   GNUNET_PSYC_env_add (env, GNUNET_PSYC_OP_SET,
-                       "_message", DATA2ARG ("Leaving."));
+                       "_notice_place_leave", DATA2ARG ("Leaving."));
   GNUNET_SOCIAL_guest_leave (gst, env, &guest_left, NULL);
   GNUNET_PSYC_env_destroy (env);
   gst = NULL;
@@ -577,19 +587,21 @@ guest_leave()
 
 
 static void
-schedule_guest_leave (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+schedule_guest_leave (void *cls)
 {
   guest_leave ();
 }
 
 
 static void
-guest_look_for_result (void *cls, int64_t result_code,
-                      const void *data, uint16_t data_size)
+guest_look_for_result (void *cls,
+                      int64_t result_code,
+                      const void *data,
+                      uint16_t data_size)
 {
   struct ResultClosure *rcls = cls;
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-              "guest_look_for_result: %d\n", result_code);
+              "guest_look_for_result: %" PRId64 "\n", result_code);
   GNUNET_assert (GNUNET_OK == result_code);
   GNUNET_assert (3 == rcls->n);
   GNUNET_free (rcls);
@@ -609,7 +621,7 @@ guest_look_for_var (void *cls,
   rcls->n++;
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
               "guest_look_for_var: %s\n%.*s\n",
-              name, value_size, value);
+              name, value_size, (const char *) value);
 }
 
 
@@ -629,7 +641,7 @@ guest_look_at_result (void *cls, int64_t result_code,
   struct ResultClosure *rcls = cls;
 
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-              "guest_look_at_result: %d\n", result_code);
+              "guest_look_at_result: %" PRId64 "\n", result_code);
   GNUNET_assert (GNUNET_OK == result_code);
   GNUNET_assert (1 == rcls->n);
   GNUNET_free (rcls);
@@ -650,7 +662,7 @@ guest_look_at_var (void *cls,
 
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
               "guest_look_at_var: %s\n%.*s\n",
-              name, value_size, value);
+              name, value_size, (const char *) value);
 }
 
 
@@ -669,9 +681,9 @@ guest_recv_history_replay_latest_result (void *cls, int64_t result,
 {
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
               "Test #%u: Guest received latest history replay result "
-              "(%lu messages, %" PRId64 " fragments):\n"
+              "(%" PRIu32 " messages, %" PRId64 " fragments):\n"
               "%.*s\n",
-              test, counter, result, data_size, data);
+              test, counter, result, data_size, (const char *) data);
   //GNUNET_assert (2 == counter); /* message count */
   //GNUNET_assert (7 == result); /* fragment count */
 
@@ -699,7 +711,7 @@ guest_recv_history_replay_result (void *cls, int64_t result,
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
               "Test #%u: Guest received history replay result: %" PRId64 "\n"
               "%.*s\n",
-              test, result, data_size, data);
+              test, result, data_size, (const char *) data);
 //  GNUNET_assert (2 == counter); /* message count */
 //  GNUNET_assert (7 == result); /* fragment count */
 
@@ -749,7 +761,7 @@ guest_recv_modifier (void *cls,
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
               "Test #%u: Guest received modifier for message ID %" PRIu64 ":\n"
               "%c%s: %.*s (size: %u)\n",
-              test, message_id, oper, name, value_size, value, value_size);
+              test, message_id, oper, name, value_size, (const char *) value, value_size);
   /** @todo FIXME: check modifier */
 }
 
@@ -767,7 +779,7 @@ guest_recv_mod_foo_bar (void *cls,
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
               "Test #%u: Guest received modifier matching _foo_bar for message ID %" PRIu64 ":\n"
               "%c%s: %.*s (size: %u)\n",
-              test, message_id, oper, name, value_size, value, value_size);
+              test, message_id, oper, name, value_size, (const char *) value, value_size);
   struct ResultClosure *rc = cls;
   rc->n++;
   /** @todo FIXME: check modifier */
@@ -785,7 +797,7 @@ guest_recv_data (void *cls,
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
               "Test #%u: Guest received data for message ID %" PRIu64 ":\n"
               "%.*s\n",
-              test, message_id, data_size, data);
+              test, message_id, data_size, (const char *) data);
   /** @todo FIXME: check data */
 }
 
@@ -861,7 +873,7 @@ host_recv_modifier (void *cls,
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
               "Test #%u: Host received modifier for message ID %" PRIu64 ":\n"
               "%c%s: %.*s\n",
-              test, message_id, oper, name, value_size, value);
+              test, message_id, oper, name, value_size, (const char *) value);
 }
 
 
@@ -876,7 +888,7 @@ host_recv_data (void *cls,
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
               "Test #%u: Host received data for message ID %" PRIu64 ":\n"
               "%.*s\n",
-              test, message_id, data_size, data);
+              test, message_id, data_size, (const char *) data);
 }
 
 
@@ -941,7 +953,7 @@ guest_talk ()
   tmit.data_count = 3;
 
   tmit.guest_talk
-    = GNUNET_SOCIAL_guest_talk (gst, "_message_guest", tmit.env,
+    = GNUNET_SOCIAL_guest_talk (gst, "_converse_guest", tmit.env,
                                 &notify_data, &tmit,
                                 GNUNET_SOCIAL_TALK_NONE);
 }
@@ -971,7 +983,7 @@ host_announce ()
   tmit.data_count = 4;
 
   tmit.host_ann
-    = GNUNET_SOCIAL_host_announce (hst, "_message_host", tmit.env,
+    = GNUNET_SOCIAL_host_announce (hst, "_converse_host", tmit.env,
                                    &notify_data, &tmit,
                                    GNUNET_SOCIAL_ANNOUNCE_NONE);
 }
@@ -1003,7 +1015,7 @@ host_announce2 ()
   tmit.data_count = 3;
 
   tmit.host_ann
-    = GNUNET_SOCIAL_host_announce (hst, "_message_host_two", tmit.env,
+    = GNUNET_SOCIAL_host_announce (hst, "_converse_host_two", tmit.env,
                                    &notify_data, &tmit,
                                    GNUNET_SOCIAL_ANNOUNCE_NONE);
 }
@@ -1031,7 +1043,7 @@ guest_recv_entry_decision (void *cls,
 
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                 "%s\n%.*s\n",
-                method_name, data_size, data);
+                method_name, data_size, (const char *) data);
     /** @todo FIXME: check response message */
   }
 
@@ -1048,7 +1060,7 @@ guest_recv_entry_decision (void *cls,
     break;
 
   case TEST_GUEST_ENTER_BY_NAME:
-    GNUNET_SCHEDULER_add_now (schedule_reconnect, NULL);
+    GNUNET_SCHEDULER_add_now (&schedule_reconnect, NULL);
     break;
 
   default:
@@ -1070,24 +1082,26 @@ host_answer_door (void *cls,
 
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
               "Test #%u: Host received entry request from guest (try %u).\n",
-              test, join_req_count);
+              (uint8_t) test, join_req_count);
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "%s\n%.*s\n",
-              method_name, data_size, data);
+              method_name, data_size, (const char *) data);
 
   switch (test)
   {
   case TEST_HOST_ANSWER_DOOR_REFUSE:
     test = TEST_GUEST_RECV_ENTRY_DCSN_REFUSE;
-    join_resp = GNUNET_PSYC_message_create ("_refuse_nym", env,
+    join_resp = GNUNET_PSYC_message_create ("_notice_place_refuse", env,
                                             DATA2ARG ("Go away!"));
     GNUNET_SOCIAL_host_entry_decision (hst, nym, GNUNET_NO, join_resp);
     break;
 
   case TEST_HOST_ANSWER_DOOR_ADMIT:
     test = TEST_GUEST_RECV_ENTRY_DCSN_ADMIT;
+    // fall through
+
   case TEST_GUEST_ENTER_BY_NAME:
-    join_resp = GNUNET_PSYC_message_create ("_admit_nym", env,
+    join_resp = GNUNET_PSYC_message_create ("_notice_place_admit", env,
                                             DATA2ARG ("Welcome, nym!"));
     GNUNET_SOCIAL_host_entry_decision (hst, nym, GNUNET_YES, join_resp);
     break;
@@ -1137,7 +1151,7 @@ guest_enter ()
                                    guest_recv_entry_decision, NULL);
   gst_plc = GNUNET_SOCIAL_guest_get_place (gst);
 
-  GNUNET_SOCIAL_place_msg_proc_set (gst_plc, "_message",
+  GNUNET_SOCIAL_place_msg_proc_set (gst_plc, "_converse",
                                     GNUNET_SOCIAL_MSG_PROC_SAVE);
 }
 
@@ -1247,7 +1261,7 @@ host_enter ()
                                   host_answer_door, host_farewell, NULL);
   hst_plc = GNUNET_SOCIAL_host_get_place (hst);
 
-  GNUNET_SOCIAL_place_msg_proc_set (hst_plc, "_message",
+  GNUNET_SOCIAL_place_msg_proc_set (hst_plc, "_converse",
                                     GNUNET_SOCIAL_MSG_PROC_RELAY);
 }
 
@@ -1274,6 +1288,7 @@ id_host_created (void *cls, const char *emsg)
                                    app_recv_ego,
                                    app_recv_host,
                                    app_recv_guest,
+                                   app_connected,
                                    NULL);
 }
 
@@ -1314,7 +1329,8 @@ run (void *cls,
 #endif
 {
   cfg = c;
-  end_badly_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, NULL);
+  end_badly_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT,
+                                                &end_badly, NULL);
 
   core = GNUNET_CORE_connect (cfg, NULL, &core_connected, NULL, NULL,
                               NULL, GNUNET_NO, NULL, GNUNET_NO, NULL);