diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2014-03-19 16:36:58 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2014-03-19 16:36:58 +0000 |
commit | 78136c31b2a37fc0622312b6bbcf5bbd81cfbfa7 (patch) | |
tree | 9d0f52d70e62ae6561655908b92c4effa70bd2a8 /src/transport/gnunet-service-transport_neighbours.c | |
parent | f140d0b6b3f82de88a08d0c260fcefc088c53db3 (diff) | |
download | gnunet-78136c31b2a37fc0622312b6bbcf5bbd81cfbfa7.tar.gz gnunet-78136c31b2a37fc0622312b6bbcf5bbd81cfbfa7.zip |
addtional check for failed CONNECT messages + some testing
Diffstat (limited to 'src/transport/gnunet-service-transport_neighbours.c')
-rw-r--r-- | src/transport/gnunet-service-transport_neighbours.c | 46 |
1 files changed, 44 insertions, 2 deletions
diff --git a/src/transport/gnunet-service-transport_neighbours.c b/src/transport/gnunet-service-transport_neighbours.c index 0cf8c09dc..7e7b8a09f 100644 --- a/src/transport/gnunet-service-transport_neighbours.c +++ b/src/transport/gnunet-service-transport_neighbours.c | |||
@@ -1592,6 +1592,48 @@ GST_neighbours_send (const struct GNUNET_PeerIdentity *target, const void *msg, | |||
1592 | n->task = GNUNET_SCHEDULER_add_now (&master_task, n); | 1592 | n->task = GNUNET_SCHEDULER_add_now (&master_task, n); |
1593 | } | 1593 | } |
1594 | 1594 | ||
1595 | static void | ||
1596 | send_session_connect_cont (void *cls, | ||
1597 | const struct GNUNET_PeerIdentity *target, | ||
1598 | int result, | ||
1599 | size_t size_payload, | ||
1600 | size_t size_on_wire) | ||
1601 | { | ||
1602 | struct NeighbourMapEntry *n; | ||
1603 | |||
1604 | n = lookup_neighbour (target); | ||
1605 | if (NULL == n) | ||
1606 | { | ||
1607 | GNUNET_break (0); /* TESTING */ | ||
1608 | return; | ||
1609 | } | ||
1610 | |||
1611 | if (GNUNET_TRANSPORT_PS_CONNECT_SENT != n->state) | ||
1612 | { | ||
1613 | GNUNET_break (0); /* TESTING */ | ||
1614 | return; | ||
1615 | } | ||
1616 | if (GNUNET_OK == result) | ||
1617 | return; | ||
1618 | |||
1619 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | ||
1620 | _("Failed to send CONNECT message to peer `%s'\n"), | ||
1621 | (GNUNET_OK == result) ? "OK" : "ERROR"); | ||
1622 | |||
1623 | /* Failed to send CONNECT message with this address */ | ||
1624 | GNUNET_ATS_address_destroyed (GST_ats, n->primary_address.address, | ||
1625 | n->primary_address.session); | ||
1626 | GNUNET_ATS_address_destroyed (GST_ats, n->primary_address.address, | ||
1627 | NULL); | ||
1628 | |||
1629 | /* Remove address and request and additional one */ | ||
1630 | unset_primary_address (n); | ||
1631 | |||
1632 | set_state_and_timeout (n, GNUNET_TRANSPORT_PS_INIT_ATS, | ||
1633 | GNUNET_TIME_relative_to_absolute (ATS_RESPONSE_TIMEOUT)); | ||
1634 | return; | ||
1635 | |||
1636 | } | ||
1595 | 1637 | ||
1596 | /** | 1638 | /** |
1597 | * Send a SESSION_CONNECT message via the given address. | 1639 | * Send a SESSION_CONNECT message via the given address. |
@@ -1634,8 +1676,8 @@ send_session_connect (struct NeighbourAddress *na) | |||
1634 | na->session, | 1676 | na->session, |
1635 | (const char *) &connect_msg, sizeof (struct SessionConnectMessage), | 1677 | (const char *) &connect_msg, sizeof (struct SessionConnectMessage), |
1636 | UINT_MAX, | 1678 | UINT_MAX, |
1637 | GNUNET_TIME_UNIT_FOREVER_REL, | 1679 | SETUP_CONNECTION_TIMEOUT, |
1638 | NULL, NULL)) | 1680 | send_session_connect_cont, NULL)) |
1639 | { | 1681 | { |
1640 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | 1682 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, |
1641 | _("Failed to transmit CONNECT message via plugin to %s\n"), | 1683 | _("Failed to transmit CONNECT message via plugin to %s\n"), |