diff options
Diffstat (limited to 'src/transport/gnunet-service-transport.c')
-rw-r--r-- | src/transport/gnunet-service-transport.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/transport/gnunet-service-transport.c b/src/transport/gnunet-service-transport.c index d239ce0ce..28fd38126 100644 --- a/src/transport/gnunet-service-transport.c +++ b/src/transport/gnunet-service-transport.c | |||
@@ -1746,11 +1746,11 @@ run_validation (void *cls, | |||
1746 | struct TransportPlugin *tp; | 1746 | struct TransportPlugin *tp; |
1747 | struct ValidationAddress *va; | 1747 | struct ValidationAddress *va; |
1748 | struct GNUNET_PeerIdentity id; | 1748 | struct GNUNET_PeerIdentity id; |
1749 | char *pingMessage; | ||
1750 | int sent; | 1749 | int sent; |
1751 | struct TransportPingMessage *ping; | 1750 | struct TransportPingMessage *ping; |
1752 | char * message_buf; | 1751 | char * message_buf; |
1753 | int hello_size; | 1752 | int hello_size; |
1753 | int tsize; | ||
1754 | 1754 | ||
1755 | tp = find_transport (tname); | 1755 | tp = find_transport (tname); |
1756 | if (tp == NULL) | 1756 | if (tp == NULL) |
@@ -1780,27 +1780,34 @@ run_validation (void *cls, | |||
1780 | memcpy (&va[1], addr, addrlen); | 1780 | memcpy (&va[1], addr, addrlen); |
1781 | 1781 | ||
1782 | hello_size = GNUNET_HELLO_size(our_hello); | 1782 | hello_size = GNUNET_HELLO_size(our_hello); |
1783 | message_buf = GNUNET_malloc(sizeof(struct TransportPingMessage) + hello_size); | 1783 | tsize = sizeof(struct TransportPingMessage) + hello_size; |
1784 | memcpy(message_buf, &our_hello, hello_size); | 1784 | |
1785 | message_buf = GNUNET_malloc(tsize); | ||
1785 | 1786 | ||
1786 | ping = GNUNET_malloc(sizeof(struct TransportPingMessage)); | 1787 | ping = GNUNET_malloc(sizeof(struct TransportPingMessage)); |
1787 | ping->challenge = htonl(va->challenge); | 1788 | ping->challenge = htonl(va->challenge); |
1788 | ping->header.size = htons(sizeof(struct TransportPingMessage)); | 1789 | ping->header.size = htons(sizeof(struct TransportPingMessage)); |
1789 | ping->header.type = htons(GNUNET_MESSAGE_TYPE_TRANSPORT_PING); | 1790 | ping->header.type = htons(GNUNET_MESSAGE_TYPE_TRANSPORT_PING); |
1790 | memcpy(&ping->target, &id, sizeof(struct GNUNET_PeerIdentity)); | 1791 | memcpy(&ping->target, &id, sizeof(struct GNUNET_PeerIdentity)); |
1792 | |||
1793 | GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "hello size is %d, ping size is %d, total size is %d", hello_size, sizeof(struct TransportPingMessage), tsize); | ||
1794 | |||
1795 | memcpy(message_buf, our_hello, hello_size); | ||
1791 | memcpy(&message_buf[hello_size], ping, sizeof(struct TransportPingMessage)); | 1796 | memcpy(&message_buf[hello_size], ping, sizeof(struct TransportPingMessage)); |
1792 | 1797 | ||
1798 | |||
1799 | |||
1793 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Sending ping message to address `%s' via `%s' for `%4s'\n", | 1800 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Sending ping message to address `%s' via `%s' for `%4s'\n", |
1794 | GNUNET_a2s (addr, addrlen), tname, GNUNET_i2s (&id)); | 1801 | GNUNET_a2s (addr, addrlen), tname, GNUNET_i2s (&id)); |
1795 | 1802 | ||
1796 | 1803 | ||
1797 | sent = tp->api->send(tp->api->cls, &id, message_buf, sizeof(struct TransportPingMessage) + hello_size, GNUNET_SCHEDULER_PRIORITY_DEFAULT, | 1804 | sent = tp->api->send(tp->api->cls, &id, message_buf, tsize, GNUNET_SCHEDULER_PRIORITY_DEFAULT, |
1798 | TRANSPORT_DEFAULT_TIMEOUT, addr, addrlen, GNUNET_YES, NULL, NULL); | 1805 | TRANSPORT_DEFAULT_TIMEOUT, addr, addrlen, GNUNET_YES, NULL, NULL); |
1799 | 1806 | ||
1800 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Transport returned %d from send!\n", sent); | 1807 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Transport returned %d from send!\n", sent); |
1801 | 1808 | ||
1802 | GNUNET_free(pingMessage); | 1809 | GNUNET_free(ping); |
1803 | 1810 | GNUNET_free(message_buf); | |
1804 | return GNUNET_OK; | 1811 | return GNUNET_OK; |
1805 | } | 1812 | } |
1806 | 1813 | ||