aboutsummaryrefslogtreecommitdiff
path: root/src/transport/gnunet-service-transport.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/transport/gnunet-service-transport.c')
-rw-r--r--src/transport/gnunet-service-transport.c19
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