aboutsummaryrefslogtreecommitdiff
path: root/src/mesh
diff options
context:
space:
mode:
authorBart Polot <bart@net.in.tum.de>2014-02-04 14:14:15 +0000
committerBart Polot <bart@net.in.tum.de>2014-02-04 14:14:15 +0000
commit0b5f6e33b5009f4478817e5c2d1085e56baf235e (patch)
tree38935b4ee083191ab72e5cf258972d0abf7fd747 /src/mesh
parent0acd56363b4db7a787af5848dad94764fe6ac450 (diff)
downloadgnunet-0b5f6e33b5009f4478817e5c2d1085e56baf235e.tar.gz
gnunet-0b5f6e33b5009f4478817e5c2d1085e56baf235e.zip
- copy hellos since parameter is const
Diffstat (limited to 'src/mesh')
-rw-r--r--src/mesh/gnunet-service-mesh_peer.c19
-rw-r--r--src/mesh/gnunet-service-mesh_peer.h2
2 files changed, 16 insertions, 5 deletions
diff --git a/src/mesh/gnunet-service-mesh_peer.c b/src/mesh/gnunet-service-mesh_peer.c
index 9a3623e7d..3eeea68dd 100644
--- a/src/mesh/gnunet-service-mesh_peer.c
+++ b/src/mesh/gnunet-service-mesh_peer.c
@@ -1878,14 +1878,17 @@ GMP_get_tunnel (const struct MeshPeer *peer)
1878 * @param hello Hello message. 1878 * @param hello Hello message.
1879 */ 1879 */
1880void 1880void
1881GMP_set_hello (struct MeshPeer *peer, struct GNUNET_HELLO_Message *hello) 1881GMP_set_hello (struct MeshPeer *peer, const struct GNUNET_HELLO_Message *hello)
1882{ 1882{
1883 struct GNUNET_TIME_Absolute expiration; 1883 struct GNUNET_TIME_Absolute expiration;
1884 struct GNUNET_TIME_Relative remaining; 1884 struct GNUNET_TIME_Relative remaining;
1885 size_t size;
1885 1886
1886 if (NULL == peer->hello) 1887 if (NULL == peer->hello)
1887 { 1888 {
1888 peer->hello = hello; 1889 size = GNUNET_HELLO_size (hello);
1890 peer->hello = GNUNET_malloc (size);
1891 memcpy (peer->hello, hello, size);
1889 return; 1892 return;
1890 } 1893 }
1891 1894
@@ -1894,10 +1897,18 @@ GMP_set_hello (struct MeshPeer *peer, struct GNUNET_HELLO_Message *hello)
1894 if (0 == remaining.rel_value_us) 1897 if (0 == remaining.rel_value_us)
1895 { 1898 {
1896 GNUNET_free (peer->hello); 1899 GNUNET_free (peer->hello);
1897 peer->hello = hello; 1900 size = GNUNET_HELLO_size (hello);
1901 peer->hello = GNUNET_malloc (size);
1902 memcpy (peer->hello, hello, size);
1898 } 1903 }
1899 else 1904 else
1900 peer->hello = GNUNET_HELLO_merge (peer->hello, hello); 1905 {
1906 struct GNUNET_HELLO_Message *old;
1907
1908 old = peer->hello;
1909 peer->hello = GNUNET_HELLO_merge (old, hello);
1910 GNUNET_free (old);
1911 }
1901} 1912}
1902 1913
1903 1914
diff --git a/src/mesh/gnunet-service-mesh_peer.h b/src/mesh/gnunet-service-mesh_peer.h
index 586cf5d06..234991ade 100644
--- a/src/mesh/gnunet-service-mesh_peer.h
+++ b/src/mesh/gnunet-service-mesh_peer.h
@@ -325,7 +325,7 @@ GMP_get_tunnel (const struct MeshPeer *peer);
325 * @param hello Hello message. 325 * @param hello Hello message.
326 */ 326 */
327void 327void
328GMP_set_hello (struct MeshPeer *peer, struct GNUNET_HELLO_Message *hello); 328GMP_set_hello (struct MeshPeer *peer, const struct GNUNET_HELLO_Message *hello);
329 329
330/** 330/**
331 * Get the hello message. 331 * Get the hello message.