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 16:36:58 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2014-03-19 16:36:58 +0000
commit78136c31b2a37fc0622312b6bbcf5bbd81cfbfa7 (patch)
tree9d0f52d70e62ae6561655908b92c4effa70bd2a8 /src/transport/gnunet-service-transport_neighbours.c
parentf140d0b6b3f82de88a08d0c260fcefc088c53db3 (diff)
downloadgnunet-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.c46
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
1595static void
1596send_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"),