aboutsummaryrefslogtreecommitdiff
path: root/src/transport/gnunet-service-transport_neighbours.c
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2014-03-19 15:07:21 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2014-03-19 15:07:21 +0000
commitf140d0b6b3f82de88a08d0c260fcefc088c53db3 (patch)
tree6d757fa3cf9c1569b958630e19cd4b5207a9b092 /src/transport/gnunet-service-transport_neighbours.c
parent20d36c66354673b1f908bda60656fa0905e65319 (diff)
downloadgnunet-f140d0b6b3f82de88a08d0c260fcefc088c53db3.tar.gz
gnunet-f140d0b6b3f82de88a08d0c260fcefc088c53db3.zip
unsetting primary address on when free'ing address for monitoring
Diffstat (limited to 'src/transport/gnunet-service-transport_neighbours.c')
-rw-r--r--src/transport/gnunet-service-transport_neighbours.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/src/transport/gnunet-service-transport_neighbours.c b/src/transport/gnunet-service-transport_neighbours.c
index d80149e47..0cf8c09dc 100644
--- a/src/transport/gnunet-service-transport_neighbours.c
+++ b/src/transport/gnunet-service-transport_neighbours.c
@@ -578,6 +578,8 @@ free_address (struct NeighbourAddress *na)
578 GNUNET_ATS_address_in_use (GST_ats, na->address, na->session, GNUNET_NO); 578 GNUNET_ATS_address_in_use (GST_ats, na->address, na->session, GNUNET_NO);
579 } 579 }
580 580
581 na->bandwidth_in = GNUNET_BANDWIDTH_value_init (0);
582 na->bandwidth_out = GNUNET_BANDWIDTH_value_init (0);
581 na->ats_active = GNUNET_NO; 583 na->ats_active = GNUNET_NO;
582 na->keep_alive_nonce = 0; 584 na->keep_alive_nonce = 0;
583 if (NULL != na->address) 585 if (NULL != na->address)
@@ -799,8 +801,6 @@ set_primary_address (struct NeighbourMapEntry *n,
799 n->primary_address.bandwidth_out); 801 n->primary_address.bandwidth_out);
800} 802}
801 803
802#if 0
803TODO: Implement this
804/** 804/**
805 * Clear the primary address of a neighbour since this primary address is not 805 * Clear the primary address of a neighbour since this primary address is not
806 * valid anymore and notify monitoring about it 806 * valid anymore and notify monitoring about it
@@ -810,10 +810,18 @@ TODO: Implement this
810static void 810static void
811unset_primary_address (struct NeighbourMapEntry *n) 811unset_primary_address (struct NeighbourMapEntry *n)
812{ 812{
813 /* Unset primary address */
814 free_address (&n->primary_address);
813 815
816 /* Notify monitoring about it */
817 neighbour_change_cb (callback_cls,
818 &n->id,
819 NULL,
820 n->state, n->timeout,
821 n->primary_address.bandwidth_in,
822 n->primary_address.bandwidth_out);
814} 823}
815 824
816#endif
817 825
818 826
819/** 827/**
@@ -854,6 +862,7 @@ free_neighbour (struct NeighbourMapEntry *n,
854 GNUNET_NO); 862 GNUNET_NO);
855 disconnect_notify_cb (callback_cls, &n->id); 863 disconnect_notify_cb (callback_cls, &n->id);
856 } 864 }
865
857 /* Mark peer as disconnected */ 866 /* Mark peer as disconnected */
858 set_state (n, GNUNET_TRANSPORT_PS_DISCONNECT_FINISHED); 867 set_state (n, GNUNET_TRANSPORT_PS_DISCONNECT_FINISHED);
859 868
@@ -863,7 +872,7 @@ free_neighbour (struct NeighbourMapEntry *n,
863 backup_primary = NULL; 872 backup_primary = NULL;
864 873
865 /* free addresses and mark as unused */ 874 /* free addresses and mark as unused */
866 free_address (&n->primary_address); 875 unset_primary_address (n);
867 free_address (&n->alternative_address); 876 free_address (&n->alternative_address);
868 877
869 /* cut all transport-level connection for this peer */ 878 /* cut all transport-level connection for this peer */
@@ -1644,8 +1653,10 @@ send_session_connect (struct NeighbourAddress *na)
1644 GNUNET_ATS_address_destroyed (GST_ats, na->address, NULL); 1653 GNUNET_ATS_address_destroyed (GST_ats, na->address, NULL);
1645 1654
1646 /* Remove address and request and additional one */ 1655 /* Remove address and request and additional one */
1647 /* TODO */ 1656 unset_primary_address (n);
1648 1657
1658 set_state_and_timeout (n, GNUNET_TRANSPORT_PS_INIT_ATS,
1659 GNUNET_TIME_relative_to_absolute (ATS_RESPONSE_TIMEOUT));
1649 return; 1660 return;
1650 } 1661 }
1651 1662
@@ -3420,7 +3431,7 @@ GST_neighbours_session_terminated (const struct GNUNET_PeerIdentity *peer,
3420 GST_plugins_a2s (n->primary_address.address), n->primary_address.session, 3431 GST_plugins_a2s (n->primary_address.address), n->primary_address.session,
3421 GNUNET_i2s (peer)); 3432 GNUNET_i2s (peer));
3422 GNUNET_ATS_address_destroyed (GST_ats, n->primary_address.address, NULL); 3433 GNUNET_ATS_address_destroyed (GST_ats, n->primary_address.address, NULL);
3423 free_address (&n->primary_address); 3434 unset_primary_address (n);
3424 set_state_and_timeout (n, GNUNET_TRANSPORT_PS_INIT_ATS, 3435 set_state_and_timeout (n, GNUNET_TRANSPORT_PS_INIT_ATS,
3425 GNUNET_TIME_relative_to_absolute (ATS_RESPONSE_TIMEOUT)); 3436 GNUNET_TIME_relative_to_absolute (ATS_RESPONSE_TIMEOUT));
3426 break; 3437 break;
@@ -3433,9 +3444,9 @@ GST_neighbours_session_terminated (const struct GNUNET_PeerIdentity *peer,
3433 free_neighbour (n, GNUNET_NO); 3444 free_neighbour (n, GNUNET_NO);
3434 return GNUNET_YES; 3445 return GNUNET_YES;
3435 case GNUNET_TRANSPORT_PS_CONNECTED: 3446 case GNUNET_TRANSPORT_PS_CONNECTED:
3447 unset_primary_address (n);
3436 set_state_and_timeout (n, GNUNET_TRANSPORT_PS_RECONNECT_ATS, 3448 set_state_and_timeout (n, GNUNET_TRANSPORT_PS_RECONNECT_ATS,
3437 GNUNET_TIME_relative_to_absolute (ATS_RESPONSE_TIMEOUT)); 3449 GNUNET_TIME_relative_to_absolute (ATS_RESPONSE_TIMEOUT));
3438 free_address (&n->primary_address);
3439 break; 3450 break;
3440 case GNUNET_TRANSPORT_PS_RECONNECT_ATS: 3451 case GNUNET_TRANSPORT_PS_RECONNECT_ATS:
3441 /* we don't have an address, how can it go down? */ 3452 /* we don't have an address, how can it go down? */