aboutsummaryrefslogtreecommitdiff
path: root/src/transport/plugin_transport_tcp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/transport/plugin_transport_tcp.c')
-rw-r--r--src/transport/plugin_transport_tcp.c26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/transport/plugin_transport_tcp.c b/src/transport/plugin_transport_tcp.c
index 11b9f0709..3ed20d4fa 100644
--- a/src/transport/plugin_transport_tcp.c
+++ b/src/transport/plugin_transport_tcp.c
@@ -1600,6 +1600,9 @@ handle_tcp_pong (void *cls,
1600 struct GNUNET_PeerIdentity peer; 1600 struct GNUNET_PeerIdentity peer;
1601 char *sender_addr; 1601 char *sender_addr;
1602 size_t addrlen; 1602 size_t addrlen;
1603 const struct sockaddr *addr;
1604 struct sockaddr_in v4;
1605 struct sockaddr_in6 v6;
1603 1606
1604#if DEBUG_TRANSPORT 1607#if DEBUG_TRANSPORT
1605 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG | GNUNET_ERROR_TYPE_BULK, 1608 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG | GNUNET_ERROR_TYPE_BULK,
@@ -1637,8 +1640,27 @@ handle_tcp_pong (void *cls,
1637 GNUNET_CRYPTO_hash (&vcr->signer, 1640 GNUNET_CRYPTO_hash (&vcr->signer,
1638 sizeof( struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded), 1641 sizeof( struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded),
1639 &peer.hashPubKey); 1642 &peer.hashPubKey);
1640 sender_addr = GNUNET_strdup (GNUNET_a2s((const struct sockaddr*) &vcr[1], 1643 addr = (const struct sockaddr*) &vcr[1];
1641 addrlen)); 1644 if (addrlen == sizeof (struct sockaddr_in))
1645 {
1646 memcpy (&v4, addr, sizeof (struct sockaddr_in));
1647 v4.sin_port = htons(check_port (plugin, ntohs (v4.sin_port)));
1648 sender_addr = GNUNET_strdup (GNUNET_a2s((const struct sockaddr*) &v4,
1649 addrlen));
1650 }
1651 else if (addrlen == sizeof (struct sockaddr_in6))
1652 {
1653 memcpy (&v6, addr, sizeof (struct sockaddr_in6));
1654 v6.sin6_port = htons(check_port (plugin, ntohs (v6.sin6_port)));
1655 sender_addr = GNUNET_strdup (GNUNET_a2s((const struct sockaddr*) &v6,
1656 addrlen));
1657 }
1658 else
1659 {
1660 GNUNET_break_op (0);
1661 GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
1662 return;
1663 }
1642 plugin->env->notify_validation (plugin->env->cls, 1664 plugin->env->notify_validation (plugin->env->cls,
1643 "tcp", 1665 "tcp",
1644 &peer, 1666 &peer,