diff options
author | Bart Polot <bart@net.in.tum.de> | 2014-02-04 14:14:15 +0000 |
---|---|---|
committer | Bart Polot <bart@net.in.tum.de> | 2014-02-04 14:14:15 +0000 |
commit | 0b5f6e33b5009f4478817e5c2d1085e56baf235e (patch) | |
tree | 38935b4ee083191ab72e5cf258972d0abf7fd747 /src/mesh | |
parent | 0acd56363b4db7a787af5848dad94764fe6ac450 (diff) | |
download | gnunet-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.c | 19 | ||||
-rw-r--r-- | src/mesh/gnunet-service-mesh_peer.h | 2 |
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 | */ |
1880 | void | 1880 | void |
1881 | GMP_set_hello (struct MeshPeer *peer, struct GNUNET_HELLO_Message *hello) | 1881 | GMP_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 | */ |
327 | void | 327 | void |
328 | GMP_set_hello (struct MeshPeer *peer, struct GNUNET_HELLO_Message *hello); | 328 | GMP_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. |