- copy hellos since parameter is const
authorBart Polot <bart@net.in.tum.de>
Tue, 4 Feb 2014 14:14:15 +0000 (14:14 +0000)
committerBart Polot <bart@net.in.tum.de>
Tue, 4 Feb 2014 14:14:15 +0000 (14:14 +0000)
src/mesh/gnunet-service-mesh_peer.c
src/mesh/gnunet-service-mesh_peer.h

index 9a3623e7de4c0225d1e1b4e0bf3735e9e8f9f10e..3eeea68ddf011c4d42fb579dc280eb20e1588861 100644 (file)
@@ -1878,14 +1878,17 @@ GMP_get_tunnel (const struct MeshPeer *peer)
  * @param hello Hello message.
  */
 void
  * @param hello Hello message.
  */
 void
-GMP_set_hello (struct MeshPeer *peer, struct GNUNET_HELLO_Message *hello)
+GMP_set_hello (struct MeshPeer *peer, const struct GNUNET_HELLO_Message *hello)
 {
   struct GNUNET_TIME_Absolute expiration;
   struct GNUNET_TIME_Relative remaining;
 {
   struct GNUNET_TIME_Absolute expiration;
   struct GNUNET_TIME_Relative remaining;
+  size_t size;
 
   if (NULL == peer->hello)
   {
 
   if (NULL == peer->hello)
   {
-    peer->hello = hello;
+    size = GNUNET_HELLO_size (hello);
+    peer->hello = GNUNET_malloc (size);
+    memcpy (peer->hello, hello, size);
     return;
   }
 
     return;
   }
 
@@ -1894,10 +1897,18 @@ GMP_set_hello (struct MeshPeer *peer, struct GNUNET_HELLO_Message *hello)
   if (0 == remaining.rel_value_us)
   {
     GNUNET_free (peer->hello);
   if (0 == remaining.rel_value_us)
   {
     GNUNET_free (peer->hello);
-    peer->hello = hello;
+    size = GNUNET_HELLO_size (hello);
+    peer->hello = GNUNET_malloc (size);
+    memcpy (peer->hello, hello, size);
   }
   else
   }
   else
-    peer->hello = GNUNET_HELLO_merge (peer->hello, hello);
+  {
+    struct GNUNET_HELLO_Message *old;
+
+    old = peer->hello;
+    peer->hello = GNUNET_HELLO_merge (old, hello);
+    GNUNET_free (old);
+  }
 }
 
 
 }
 
 
index 586cf5d06877c633f93b68925905ce09c395e880..234991aded1bf8099cb87cfa98f9e296dfcf7f58 100644 (file)
@@ -325,7 +325,7 @@ GMP_get_tunnel (const struct MeshPeer *peer);
  * @param hello Hello message.
  */
 void
  * @param hello Hello message.
  */
 void
-GMP_set_hello (struct MeshPeer *peer, struct GNUNET_HELLO_Message *hello);
+GMP_set_hello (struct MeshPeer *peer, const struct GNUNET_HELLO_Message *hello);
 
 /**
  * Get the hello message.
 
 /**
  * Get the hello message.