diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2011-12-20 16:41:19 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2011-12-20 16:41:19 +0000 |
commit | 4fc6a7040d573ecd291c70da9c800e842b260963 (patch) | |
tree | bc9392adcaf93c9e5112819712121cb1fec70ffa /src | |
parent | 2419f534220ce866453050fab08825c90be90d73 (diff) | |
download | gnunet-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.c | 32 |
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++; |