diff options
-rw-r--r-- | src/mesh/gnunet-service-mesh_peer.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/mesh/gnunet-service-mesh_peer.c b/src/mesh/gnunet-service-mesh_peer.c index e073b3355..32d251396 100644 --- a/src/mesh/gnunet-service-mesh_peer.c +++ b/src/mesh/gnunet-service-mesh_peer.c | |||
@@ -1842,7 +1842,24 @@ GMP_get_tunnel (const struct MeshPeer *peer) | |||
1842 | void | 1842 | void |
1843 | GMP_set_hello (struct MeshPeer *peer, const struct GNUNET_HELLO_Message *hello) | 1843 | GMP_set_hello (struct MeshPeer *peer, const struct GNUNET_HELLO_Message *hello) |
1844 | { | 1844 | { |
1845 | peer->hello = hello; | 1845 | struct GNUNET_TIME_Absolute expiration; |
1846 | struct GNUNET_TIME_Relative remaining; | ||
1847 | |||
1848 | if (NULL == peer->hello) | ||
1849 | { | ||
1850 | peer->hello = hello; | ||
1851 | return; | ||
1852 | } | ||
1853 | |||
1854 | expiration = GNUNET_HELLO_get_last_expiration (peer->hello); | ||
1855 | remaining = GNUNET_TIME_absolute_get_remaining (expiration); | ||
1856 | if (0 == remaining.rel_value_us) | ||
1857 | { | ||
1858 | GNUNET_free (peer->hello); | ||
1859 | peer->hello = hello; | ||
1860 | } | ||
1861 | else | ||
1862 | peer->hello = GNUNET_HELLO_merge (peer->hello, hello); | ||
1846 | } | 1863 | } |
1847 | 1864 | ||
1848 | 1865 | ||