aboutsummaryrefslogtreecommitdiff
path: root/src/ats/gnunet-service-ats_addresses.c
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2013-12-18 16:31:43 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2013-12-18 16:31:43 +0000
commit397b5c300a1c0ea3521191c69a325f6d9166ebb0 (patch)
tree4fbe80dde2cb52d4c96a423ff14228dcb4458418 /src/ats/gnunet-service-ats_addresses.c
parenta4ae4a97527fc6532aa9b7a0f20d1a2f5d7b73ba (diff)
downloadgnunet-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.c6
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}