diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2013-07-09 14:33:24 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2013-07-09 14:33:24 +0000 |
commit | 733629155b27695e462e43a4883b79769ebecbb5 (patch) | |
tree | a57a7af720129329807580d85e82afb0546c8e20 /src/ats | |
parent | 403463fce31bfcdb8f55673a3c68b337126a73a8 (diff) | |
download | gnunet-733629155b27695e462e43a4883b79769ebecbb5.tar.gz gnunet-733629155b27695e462e43a4883b79769ebecbb5.zip |
fixed adding addresses with updated networks
Diffstat (limited to 'src/ats')
-rw-r--r-- | src/ats/gnunet-service-ats_addresses.c | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/src/ats/gnunet-service-ats_addresses.c b/src/ats/gnunet-service-ats_addresses.c index 717daa576..fc578efd5 100644 --- a/src/ats/gnunet-service-ats_addresses.c +++ b/src/ats/gnunet-service-ats_addresses.c | |||
@@ -761,7 +761,7 @@ GAS_addresses_add (struct GAS_Addresses_Handle *handle, | |||
761 | uint32_t atsi_delta_count; | 761 | uint32_t atsi_delta_count; |
762 | uint32_t addr_net; | 762 | uint32_t addr_net; |
763 | uint32_t previous_session; | 763 | uint32_t previous_session; |
764 | 764 | int c1; | |
765 | 765 | ||
766 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 766 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
767 | "Received `%s' for peer `%s'\n", | 767 | "Received `%s' for peer `%s'\n", |
@@ -792,8 +792,8 @@ GAS_addresses_add (struct GAS_Addresses_Handle *handle, | |||
792 | &peer->hashPubKey, new_address, | 792 | &peer->hashPubKey, new_address, |
793 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE)); | 793 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE)); |
794 | 794 | ||
795 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Adding new address for peer `%s' session id %u, %p\n", | 795 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Adding new address %p for peer `%s' session id %u, %s\n", |
796 | GNUNET_i2s (peer), session_id, new_address); | 796 | new_address, GNUNET_i2s (peer), session_id, GNUNET_ATS_print_network_type(addr_net)); |
797 | 797 | ||
798 | /* Tell solver about new address */ | 798 | /* Tell solver about new address */ |
799 | handle->s_add (handle->solver, new_address, addr_net); | 799 | handle->s_add (handle->solver, new_address, addr_net); |
@@ -826,6 +826,16 @@ GAS_addresses_add (struct GAS_Addresses_Handle *handle, | |||
826 | return; | 826 | return; |
827 | } | 827 | } |
828 | 828 | ||
829 | addr_net = get_performance_info (existing_address, GNUNET_ATS_NETWORK_TYPE); | ||
830 | if (GNUNET_ATS_VALUE_UNDEFINED == addr_net) | ||
831 | addr_net = GNUNET_ATS_NET_UNSPECIFIED; | ||
832 | |||
833 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
834 | "Found existing address for peer `%s' %p with new session %u in network %s\n", | ||
835 | GNUNET_i2s (peer), | ||
836 | existing_address, | ||
837 | session_id, | ||
838 | GNUNET_ATS_print_network_type (addr_net)); | ||
829 | /* We have an address without an session, update this address */ | 839 | /* We have an address without an session, update this address */ |
830 | atsi_delta = NULL; | 840 | atsi_delta = NULL; |
831 | atsi_delta_count = 0; | 841 | atsi_delta_count = 0; |
@@ -840,6 +850,19 @@ GAS_addresses_add (struct GAS_Addresses_Handle *handle, | |||
840 | existing_address->assigned_bw_out, | 850 | existing_address->assigned_bw_out, |
841 | existing_address->assigned_bw_in); | 851 | existing_address->assigned_bw_in); |
842 | 852 | ||
853 | for (c1 = 0; c1 < atsi_delta_count; c1++) | ||
854 | { | ||
855 | if (GNUNET_ATS_NETWORK_TYPE == ntohl (atsi_delta[c1].type)) | ||
856 | { | ||
857 | /* Network type changed */ | ||
858 | GNUNET_break (0); | ||
859 | handle->s_address_update_network (handle->solver, existing_address, | ||
860 | ntohl (atsi_delta[c1].value), | ||
861 | get_performance_info (existing_address, GNUNET_ATS_NETWORK_TYPE)); | ||
862 | addr_net = get_performance_info (existing_address, GNUNET_ATS_NETWORK_TYPE); | ||
863 | } | ||
864 | } | ||
865 | |||
843 | /* Notify solver about update with atsi information and session */ | 866 | /* Notify solver about update with atsi information and session */ |
844 | handle->s_bulk_start (handle->solver); | 867 | handle->s_bulk_start (handle->solver); |
845 | GAS_normalization_normalize_property (handle->addresses, existing_address, atsi, atsi_count); | 868 | GAS_normalization_normalize_property (handle->addresses, existing_address, atsi, atsi_count); |
@@ -854,8 +877,11 @@ GAS_addresses_add (struct GAS_Addresses_Handle *handle, | |||
854 | previous_session, session_id); | 877 | previous_session, session_id); |
855 | 878 | ||
856 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 879 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
857 | "Updated existing address for peer `%s' %p with new session %u\n", | 880 | "Updated existing address for peer `%s' %p with new session %u in network %s\n", |
858 | GNUNET_i2s (peer), existing_address, session_id); | 881 | GNUNET_i2s (peer), |
882 | existing_address, | ||
883 | session_id, | ||
884 | GNUNET_ATS_print_network_type(addr_net)); | ||
859 | } | 885 | } |
860 | 886 | ||
861 | 887 | ||
@@ -930,7 +956,6 @@ GAS_addresses_update (struct GAS_Addresses_Handle *handle, | |||
930 | if (GNUNET_YES == disassemble_ats_information (aa, atsi, atsi_count, &atsi_delta, &atsi_delta_count)) | 956 | if (GNUNET_YES == disassemble_ats_information (aa, atsi, atsi_count, &atsi_delta, &atsi_delta_count)) |
931 | { | 957 | { |
932 | /* ATS properties changed */ | 958 | /* ATS properties changed */ |
933 | |||
934 | for (c1 = 0; c1 < atsi_delta_count; c1++) | 959 | for (c1 = 0; c1 < atsi_delta_count; c1++) |
935 | { | 960 | { |
936 | if (GNUNET_ATS_NETWORK_TYPE == ntohl (atsi_delta[c1].type)) | 961 | if (GNUNET_ATS_NETWORK_TYPE == ntohl (atsi_delta[c1].type)) |