aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2011-12-20 16:41:19 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2011-12-20 16:41:19 +0000
commit4fc6a7040d573ecd291c70da9c800e842b260963 (patch)
treebc9392adcaf93c9e5112819712121cb1fec70ffa /src
parent2419f534220ce866453050fab08825c90be90d73 (diff)
downloadgnunet-4fc6a7040d573ecd291c70da9c800e842b260963.tar.gz
gnunet-4fc6a7040d573ecd291c70da9c800e842b260963.zip
fix for mantis 1959
compare addresses and only mark address when addresses match
Diffstat (limited to 'src')
-rw-r--r--src/transport/gnunet-service-transport_neighbours.c32
1 files changed, 15 insertions, 17 deletions
diff --git a/src/transport/gnunet-service-transport_neighbours.c b/src/transport/gnunet-service-transport_neighbours.c
index ca7eb7b08..aaeefe8d4 100644
--- a/src/transport/gnunet-service-transport_neighbours.c
+++ b/src/transport/gnunet-service-transport_neighbours.c
@@ -895,9 +895,7 @@ disconnect_neighbour (struct NeighbourMapEntry *n)
895 GNUNET_assert (NULL != n->address); 895 GNUNET_assert (NULL != n->address);
896 if (n->address_state == USED) 896 if (n->address_state == USED)
897 { 897 {
898 GST_validation_set_address_use (n->address, n->session, 898 GST_validation_set_address_use (n->address, n->session, GNUNET_NO);
899 GNUNET_NO);
900
901 GNUNET_ATS_address_in_use (GST_ats, n->address, n->session, GNUNET_NO); 899 GNUNET_ATS_address_in_use (GST_ats, n->address, n->session, GNUNET_NO);
902 n->address_state = UNUSED; 900 n->address_state = UNUSED;
903 } 901 }
@@ -1246,11 +1244,10 @@ send_switch_address_continuation (void *cls,
1246 case S_CONNECTED: 1244 case S_CONNECTED:
1247 if (n->address_state == FRESH) 1245 if (n->address_state == FRESH)
1248 { 1246 {
1249 GST_validation_set_address_use (cc->address, cc->session, 1247 n->address_state = USED;
1250 GNUNET_YES); 1248 GST_validation_set_address_use (cc->address, cc->session, GNUNET_YES);
1251 GNUNET_ATS_address_update (GST_ats, cc->address, cc->session, NULL, 0); 1249 GNUNET_ATS_address_update (GST_ats, cc->address, cc->session, NULL, 0);
1252 GNUNET_ATS_address_in_use (GST_ats, cc->address, cc->session, GNUNET_YES); 1250 GNUNET_ATS_address_in_use (GST_ats, cc->address, cc->session, GNUNET_YES);
1253 n->address_state = USED;
1254 } 1251 }
1255 break; 1252 break;
1256 case S_FAST_RECONNECT: 1253 case S_FAST_RECONNECT:
@@ -1266,11 +1263,10 @@ send_switch_address_continuation (void *cls,
1266 1263
1267 if (n->address_state == FRESH) 1264 if (n->address_state == FRESH)
1268 { 1265 {
1269 GST_validation_set_address_use (cc->address, cc->session, 1266 n->address_state = USED;
1270 GNUNET_YES); 1267 GST_validation_set_address_use (cc->address, cc->session, GNUNET_YES);
1271 GNUNET_ATS_address_update (GST_ats, cc->address, cc->session, NULL, 0); 1268 GNUNET_ATS_address_update (GST_ats, cc->address, cc->session, NULL, 0);
1272 GNUNET_ATS_address_in_use (GST_ats, cc->address, cc->session, GNUNET_YES); 1269 GNUNET_ATS_address_in_use (GST_ats, cc->address, cc->session, GNUNET_YES);
1273 n->address_state = USED;
1274 } 1270 }
1275 1271
1276 if (n->keepalive_task == GNUNET_SCHEDULER_NO_TASK) 1272 if (n->keepalive_task == GNUNET_SCHEDULER_NO_TASK)
@@ -1432,8 +1428,7 @@ GST_neighbours_switch_to_address_3way (const struct GNUNET_PeerIdentity *peer,
1432 GNUNET_assert (NULL != n->address); 1428 GNUNET_assert (NULL != n->address);
1433 if (n->address_state == USED) 1429 if (n->address_state == USED)
1434 { 1430 {
1435 GST_validation_set_address_use (n->address, n->session, 1431 GST_validation_set_address_use (n->address, n->session, GNUNET_NO);
1436 GNUNET_NO);
1437 GNUNET_ATS_address_in_use (GST_ats, n->address, n->session, GNUNET_NO); 1432 GNUNET_ATS_address_in_use (GST_ats, n->address, n->session, GNUNET_NO);
1438 n->address_state = UNUSED; 1433 n->address_state = UNUSED;
1439 } 1434 }
@@ -1699,8 +1694,7 @@ GST_neighbours_session_terminated (const struct GNUNET_PeerIdentity *peer,
1699 { 1694 {
1700 if (n->address_state == USED) 1695 if (n->address_state == USED)
1701 { 1696 {
1702 GST_validation_set_address_use (n->address, n->session, 1697 GST_validation_set_address_use (n->address, n->session, GNUNET_NO);
1703 GNUNET_NO);
1704 GNUNET_ATS_address_in_use (GST_ats, n->address, n->session, GNUNET_NO); 1698 GNUNET_ATS_address_in_use (GST_ats, n->address, n->session, GNUNET_NO);
1705 n->address_state = UNUSED; 1699 n->address_state = UNUSED;
1706 } 1700 }
@@ -2339,11 +2333,13 @@ GST_neighbours_handle_connect_ack (const struct GNUNET_MessageHeader *message,
2339 } 2333 }
2340 GNUNET_ATS_address_update (GST_ats, address, session, ats, ats_count); 2334 GNUNET_ATS_address_update (GST_ats, address, session, ats, ats_count);
2341 GNUNET_assert (NULL != n->address); 2335 GNUNET_assert (NULL != n->address);
2342 if (n->address_state == FRESH) 2336 if ((n->address_state == FRESH) && (0 == GNUNET_HELLO_address_cmp(address, n->address)))
2343 { 2337 {
2338 n->address_state = USED;
2344 GST_validation_set_address_use (n->address, n->session, GNUNET_YES); 2339 GST_validation_set_address_use (n->address, n->session, GNUNET_YES);
2345 GNUNET_ATS_address_in_use (GST_ats, n->address, n->session, GNUNET_YES); 2340 GNUNET_ATS_address_in_use (GST_ats, n->address, n->session, GNUNET_YES);
2346 n->address_state = USED; 2341 if (n->session == NULL)
2342 n->session = session;
2347 } 2343 }
2348 2344
2349 GST_neighbours_set_incoming_quota (&n->id, n->bandwidth_in); 2345 GST_neighbours_set_incoming_quota (&n->id, n->bandwidth_in);
@@ -2426,11 +2422,13 @@ GST_neighbours_handle_ack (const struct GNUNET_MessageHeader *message,
2426 session, address->transport_name, GNUNET_i2s (peer)); 2422 session, address->transport_name, GNUNET_i2s (peer));
2427 GNUNET_ATS_address_update (GST_ats, address, session, ats, ats_count); 2423 GNUNET_ATS_address_update (GST_ats, address, session, ats, ats_count);
2428 GNUNET_assert (n->address != NULL); 2424 GNUNET_assert (n->address != NULL);
2429 if (n->address_state == FRESH) 2425 if ((n->address_state == FRESH) && (0 == GNUNET_HELLO_address_cmp(address, n->address)))
2430 { 2426 {
2427 n->address_state = USED;
2431 GST_validation_set_address_use (n->address, n->session, GNUNET_YES); 2428 GST_validation_set_address_use (n->address, n->session, GNUNET_YES);
2432 GNUNET_ATS_address_in_use (GST_ats, n->address, n->session, GNUNET_YES); 2429 GNUNET_ATS_address_in_use (GST_ats, n->address, n->session, GNUNET_YES);
2433 n->address_state = USED; 2430 if (n->session == NULL)
2431 n->session = session;
2434 } 2432 }
2435 2433
2436 neighbours_connected++; 2434 neighbours_connected++;