Fixed a memory leak when receiving a second create path for the same tunnel
[oweals/gnunet.git] / src / mesh / test_mesh_local_1.c
index 7ccab0916a3d8584cac7afb5704cce72f051eb58..1c9196bb28f5f843bb012b877bfebaee4da33a59 100644 (file)
@@ -36,6 +36,8 @@ static struct GNUNET_OS_Process *arm_pid;
 static struct GNUNET_MESH_Handle *mesh_peer_1;
 static struct GNUNET_MESH_Handle *mesh_peer_2;
 static struct GNUNET_MESH_Tunnel *t;
+static unsigned int one = 1;
+static unsigned int two = 2;
 
 static int result;
 static GNUNET_SCHEDULER_TaskIdentifier abort_task;
@@ -105,9 +107,9 @@ do_abort (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
  */
 static int
 data_callback (void *cls, struct GNUNET_MESH_Tunnel *tunnel, void **tunnel_ctx,
-          const struct GNUNET_PeerIdentity *sender,
-          const struct GNUNET_MessageHeader *message,
-          const struct GNUNET_TRANSPORT_ATS_Information *atsi)
+               const struct GNUNET_PeerIdentity *sender,
+               const struct GNUNET_MessageHeader *message,
+               const struct GNUNET_ATS_Information *atsi)
 {
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "test: Data callback\n");
   GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply
@@ -130,15 +132,15 @@ data_callback (void *cls, struct GNUNET_MESH_Tunnel *tunnel, void **tunnel_ctx,
 static void *
 inbound_tunnel (void *cls, struct GNUNET_MESH_Tunnel *tunnel,
                 const struct GNUNET_PeerIdentity *initiator,
-                const struct GNUNET_TRANSPORT_ATS_Information *atsi)
+                const struct GNUNET_ATS_Information *atsi)
 {
-  unsigned int id = (unsigned int) cls;
+  unsigned int id = *(unsigned int *) cls;
 
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "test: received incoming tunnel\n");
   if (id != 1)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-        "test: received incoming tunnel on peer 2\n");
+                "test: received incoming tunnel on peer 2\n");
     result = GNUNET_SYSERR;
   }
   return NULL;
@@ -155,17 +157,16 @@ inbound_tunnel (void *cls, struct GNUNET_MESH_Tunnel *tunnel,
  *                   with the tunnel is stored
  */
 static void
-inbound_end (void *cls,
-             const struct GNUNET_MESH_Tunnel * tunnel,
+inbound_end (void *cls, const struct GNUNET_MESH_Tunnel *tunnel,
              void *tunnel_ctx)
 {
-  unsigned int id = (unsigned int) cls;
+  unsigned int id = *(unsigned int *) cls;
 
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "test: incoming tunnel closed\n");
   if (id != 1)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-        "test: received closing tunnel on peer 2\n");
+                "test: received closing tunnel on peer 2\n");
     result = GNUNET_SYSERR;
   }
 }
@@ -177,12 +178,12 @@ inbound_end (void *cls,
  * @param cls closure
  * @param peer peer identity the tunnel stopped working with
  */
-static void peer_conected (
-    void *cls,
-    const struct GNUNET_PeerIdentity * peer)
+static void
+peer_conected (void *cls, const struct GNUNET_PeerIdentity *peer,
+               const struct GNUNET_ATS_Information *atsi)
 {
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "test: peer connected\n");
-  GNUNET_SCHEDULER_add_delayed(GNUNET_TIME_UNIT_SECONDS, &do_shutdown, NULL);
+  GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, &do_shutdown, NULL);
 }
 
 
@@ -193,10 +194,8 @@ static void peer_conected (
  * @param peer peer identity the tunnel was created to, NULL on timeout
  * @param atsi performance data for the connection
  */
-static void peer_disconnected (
-    void *cls,
-    const struct GNUNET_PeerIdentity * peer,
-    const struct GNUNET_TRANSPORT_ATS_Information * atsi)
+static void
+peer_disconnected (void *cls, const struct GNUNET_PeerIdentity *peer)
 {
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "test: peer disconnected\n");
 }
@@ -223,7 +222,7 @@ static struct GNUNET_MESH_MessageHandler handlers2[] = { {NULL, 0, 0} };
 static void
 do_find (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
-  GNUNET_MESH_peer_request_connect_by_type(t, 1);
+  GNUNET_MESH_peer_request_connect_by_type (t, 1);
 }
 
 
@@ -240,7 +239,7 @@ test (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
   test_task = GNUNET_SCHEDULER_NO_TASK;
   mesh_peer_1 = GNUNET_MESH_connect (cfg,       /* configuration */
                                      10,        /* queue size */
-                                     (void *) 1,        /* cls */
+                                     (void *) &one,     /* cls */
                                      &inbound_tunnel,   /* inbound new hndlr */
                                      &inbound_end,      /* inbound end hndlr */
                                      handlers1, /* traffic handlers */
@@ -248,7 +247,7 @@ test (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 
   mesh_peer_2 = GNUNET_MESH_connect (cfg,       /* configuration */
                                      10,        /* queue size */
-                                     (void *) 2,        /* cls */
+                                     (void *) &two,     /* cls */
                                      &inbound_tunnel,   /* inbound new hndlr */
                                      &inbound_end,      /* inbound end hndlr */
                                      handlers2, /* traffic handlers */
@@ -263,12 +262,9 @@ test (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "test: YAY! CONNECTED TO MESH :D\n");
   }
 
-  t = GNUNET_MESH_tunnel_create (mesh_peer_2,
-                                 NULL,
-                                 &peer_conected,
-                                 &peer_disconnected,
-                                 (void *) 2);
-  GNUNET_SCHEDULER_add_delayed(GNUNET_TIME_UNIT_SECONDS, &do_find, NULL);
+  t = GNUNET_MESH_tunnel_create (mesh_peer_2, NULL, &peer_conected,
+                                 &peer_disconnected, (void *) &two);
+  GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, &do_find, NULL);
 }