- fix new connection handler
authorBart Polot <bart@net.in.tum.de>
Tue, 15 Oct 2013 14:20:46 +0000 (14:20 +0000)
committerBart Polot <bart@net.in.tum.de>
Tue, 15 Oct 2013 14:20:46 +0000 (14:20 +0000)
src/mesh/gnunet-service-mesh_connection.c
src/mesh/gnunet-service-mesh_peer.c

index a47a3b83523d9eae8702bb77eb7711f088e88b31..5ca287cb157215b19863ee9333036807c9276e15 100644 (file)
@@ -929,6 +929,23 @@ unregister_neighbors (struct MeshConnection *c)
 }
 
 
+/**
+ * Bind the connection to the peer and the tunnel to that peer.
+ *
+ * If the peer has no tunnel, create one. Update tunnel and connection
+ * data structres to reflect new status.
+ *
+ * @param c Connection.
+ * @param peer Peer.
+ */
+static void
+add_to_peer (struct MeshConnection *c, struct MeshPeer *peer)
+{
+  GMP_add_tunnel (peer);
+  c->t = GMP_get_tunnel (peer);
+  GMT_add_connection (c->t, c);
+}
+
 /******************************************************************************/
 /********************************    API    ***********************************/
 /******************************************************************************/
@@ -1040,8 +1057,7 @@ GMC_handle_create (void *cls, const struct GNUNET_PeerIdentity *peer,
     LOG (GNUNET_ERROR_TYPE_DEBUG, "  It's for us!\n");
     GMP_add_path_to_origin (orig_peer, path, GNUNET_YES);
 
-    GMP_add_tunnel (orig_peer);
-    GMP_add_connection (orig_peer, c);
+    add_to_peer (c, orig_peer);
     if (MESH_TUNNEL3_NEW == GMT_get_state (c->t))
       GMT_change_state (c->t,  MESH_TUNNEL3_WAITING);
 
index 0127615c1ea5b66b49beb7e0e95987171251a645..ff0d43813cd02e2814711c7246e44fccd23da0b4 100644 (file)
@@ -1390,6 +1390,7 @@ GMP_is_neighbor (const struct MeshPeer *peer)
 
 /**
  * Create and initialize a new tunnel towards a peer, in case it has none.
+ * In case the peer already has a tunnel, nothing is done.
  *
  * Does not generate any traffic, just creates the local data structures.
  *