diff --git a/README.md b/README.md index 3c4488c4..e5bba88f 100644 --- a/README.md +++ b/README.md @@ -110,7 +110,7 @@ Proposal of a free as in freedom skype replacement: Protocol: - Node format: [char array (node_id), length=32 bytes][ip (in network byte order), length=4 bytes][port (in network byte order), length=2 bytes] + Node format: [char array (node_id), length=32 bytes][ip (in network byte order), length=4 bytes][port (in network byte order), length=2 bytes][Padding , length=2 bytes] Valid queries and Responses: @@ -122,6 +122,6 @@ Proposal of a free as in freedom skype replacement: Packet contents: [byte with value: 02][random 4 byte (ping_id)][char array (client node_id), length=32 bytes][char array: requested_node_id (node_id of which we want the ip), length=32 bytes] Valid replies: a send_nodes packet - Send_nodes (response): [byte with value: 03][random 4 byte (ping_id)][char array (client node_id), length=32 bytes][Nodes in node format, length=38 * (number of nodes (maximum of 8 nodes)) bytes] + Send_nodes (response): [byte with value: 03][random 4 byte (ping_id)][char array (client node_id), length=32 bytes][Nodes in node format, length=40 * (number of nodes (maximum of 8 nodes)) bytes] ex: 03[Node][Node][Node] diff --git a/core/DHT.c b/core/DHT.c index 37f8b323..7e138beb 100644 --- a/core/DHT.c +++ b/core/DHT.c @@ -416,7 +416,7 @@ int sendnodes(IP_Port ip_port, char * client_id, uint32_t ping_id) memcpy(data + 5, self_client_id, CLIENT_ID_SIZE); memcpy(data + 5 + CLIENT_ID_SIZE, nodes_list, num_nodes * (CLIENT_ID_SIZE + sizeof(IP_Port))); - return sendpacket(ip_port, data, sizeof(data)); + return sendpacket(ip_port, data, 5 + CLIENT_ID_SIZE + num_nodes * (CLIENT_ID_SIZE + sizeof(IP_Port))); } @@ -463,6 +463,8 @@ int handle_getnodes(char * packet, uint32_t length, IP_Port source) memcpy(&ping_id, packet + 1, 4); sendnodes(source, packet + 5 + CLIENT_ID_SIZE, ping_id); + pingreq(source); + return 0; } diff --git a/core/DHT.h b/core/DHT.h index 4a8640e6..010721f8 100644 --- a/core/DHT.h +++ b/core/DHT.h @@ -40,7 +40,8 @@ typedef struct { IP ip; uint16_t port; - + //not used for anything right now + uint16_t padding; }IP_Port;