diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2013-12-18 16:31:43 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2013-12-18 16:31:43 +0000 |
commit | 397b5c300a1c0ea3521191c69a325f6d9166ebb0 (patch) | |
tree | 4fbe80dde2cb52d4c96a423ff14228dcb4458418 /src/ats/gnunet-service-ats_addresses.c | |
parent | a4ae4a97527fc6532aa9b7a0f20d1a2f5d7b73ba (diff) | |
download | gnunet-397b5c300a1c0ea3521191c69a325f6d9166ebb0.tar.gz gnunet-397b5c300a1c0ea3521191c69a325f6d9166ebb0.zip |
idea: try to prefer 'newer' addresses to improve mobility issues
adding time of add and time of last activity information, to allow to choose 'newer' address
Diffstat (limited to 'src/ats/gnunet-service-ats_addresses.c')
-rw-r--r-- | src/ats/gnunet-service-ats_addresses.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/ats/gnunet-service-ats_addresses.c b/src/ats/gnunet-service-ats_addresses.c index 865a20a03..ddcff962b 100644 --- a/src/ats/gnunet-service-ats_addresses.c +++ b/src/ats/gnunet-service-ats_addresses.c | |||
@@ -762,6 +762,8 @@ GAS_addresses_add (struct GAS_Addresses_Handle *handle, | |||
762 | if (existing_address == NULL ) | 762 | if (existing_address == NULL ) |
763 | { | 763 | { |
764 | /* Add a new address */ | 764 | /* Add a new address */ |
765 | new_address->t_added = GNUNET_TIME_absolute_get(); | ||
766 | new_address->t_last_activity = GNUNET_TIME_absolute_get(); | ||
765 | GNUNET_assert( | 767 | GNUNET_assert( |
766 | GNUNET_OK == GNUNET_CONTAINER_multipeermap_put (handle->addresses, | 768 | GNUNET_OK == GNUNET_CONTAINER_multipeermap_put (handle->addresses, |
767 | peer, | 769 | peer, |
@@ -816,6 +818,8 @@ GAS_addresses_add (struct GAS_Addresses_Handle *handle, | |||
816 | GNUNET_i2s (peer), existing_address, session_id, | 818 | GNUNET_i2s (peer), existing_address, session_id, |
817 | GNUNET_ATS_print_network_type (addr_net)); | 819 | GNUNET_ATS_print_network_type (addr_net)); |
818 | /* We have an address without an session, update this address */ | 820 | /* We have an address without an session, update this address */ |
821 | existing_address->t_added = GNUNET_TIME_absolute_get(); | ||
822 | existing_address->t_last_activity = GNUNET_TIME_absolute_get(); | ||
819 | atsi_delta = NULL; | 823 | atsi_delta = NULL; |
820 | atsi_delta_count = 0; | 824 | atsi_delta_count = 0; |
821 | if (GNUNET_YES | 825 | if (GNUNET_YES |
@@ -914,6 +918,7 @@ GAS_addresses_update (struct GAS_Addresses_Handle *handle, | |||
914 | "ADDRESS UPDATE", GNUNET_i2s (peer), aa); | 918 | "ADDRESS UPDATE", GNUNET_i2s (peer), aa); |
915 | 919 | ||
916 | /* Update address */ | 920 | /* Update address */ |
921 | aa->t_last_activity = GNUNET_TIME_absolute_get(); | ||
917 | if (session_id != aa->session_id) | 922 | if (session_id != aa->session_id) |
918 | { | 923 | { |
919 | /* Session changed */ | 924 | /* Session changed */ |
@@ -1166,6 +1171,7 @@ GAS_addresses_in_use (struct GAS_Addresses_Handle *handle, | |||
1166 | 1171 | ||
1167 | /* Tell solver about update */ | 1172 | /* Tell solver about update */ |
1168 | ea->used = in_use; | 1173 | ea->used = in_use; |
1174 | ea->t_last_activity = GNUNET_TIME_absolute_get(); | ||
1169 | handle->env.sf.s_address_update_inuse (handle->solver, ea, ea->used); | 1175 | handle->env.sf.s_address_update_inuse (handle->solver, ea, ea->used); |
1170 | return GNUNET_OK; | 1176 | return GNUNET_OK; |
1171 | } | 1177 | } |