aboutsummaryrefslogtreecommitdiff
path: root/src/ats
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2013-07-09 14:33:24 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2013-07-09 14:33:24 +0000
commit733629155b27695e462e43a4883b79769ebecbb5 (patch)
treea57a7af720129329807580d85e82afb0546c8e20 /src/ats
parent403463fce31bfcdb8f55673a3c68b337126a73a8 (diff)
downloadgnunet-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.c37
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))