summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/DHT.c23
-rw-r--r--testing/rect.py44
-rw-r--r--testing/toxic/dhtstatus.c4
3 files changed, 25 insertions, 46 deletions
diff --git a/core/DHT.c b/core/DHT.c
index 1d13aa73..bcaaf6d8 100644
--- a/core/DHT.c
+++ b/core/DHT.c
@@ -319,6 +319,28 @@ static int replace_bad( Client_data * list,
319 319
320 return 1; 320 return 1;
321} 321}
322/*Sort the list. It will be sorted from furthest to closest.
323 TODO: this is innefficient and needs to be optimized.*/
324static void sort_list(Client_data *list, uint32_t length, uint8_t *comp_client_id)
325{
326 if(length == 0)
327 return;
328 uint32_t i, count;
329 while(1) {
330 count = 0;
331 for(i = 0; i < (length - 1); ++i) {
332 if(id_closest(comp_client_id, list[i].client_id, list[i + 1].client_id) == 1) {
333 Client_data temp = list[i + 1];
334 list[i + 1] = list[i];
335 list[i] = temp;
336 ++count;
337 }
338 }
339 if(count == 0)
340 return;
341 }
342}
343
322 344
323/* replace the first good node that is further to the comp_client_id than that of the client_id in the list */ 345/* replace the first good node that is further to the comp_client_id than that of the client_id in the list */
324static int replace_good( Client_data * list, 346static int replace_good( Client_data * list,
@@ -329,6 +351,7 @@ static int replace_good( Client_data * list,
329{ 351{
330 uint32_t i; 352 uint32_t i;
331 uint64_t temp_time = unix_time(); 353 uint64_t temp_time = unix_time();
354 sort_list(list, length, comp_client_id);
332 355
333 for(i = 0; i < length; ++i) 356 for(i = 0; i < length; ++i)
334 if(id_closest(comp_client_id, list[i].client_id, client_id) == 2) { 357 if(id_closest(comp_client_id, list[i].client_id, client_id) == 2) {
diff --git a/testing/rect.py b/testing/rect.py
deleted file mode 100644
index 05f0abc4..00000000
--- a/testing/rect.py
+++ /dev/null
@@ -1,44 +0,0 @@
1#basic python UDP script
2#for testing only
3import socket
4import random
5
6UDP_IP = "127.0.0.1"
7UDP_PORT = 5004
8
9sock = socket.socket(socket.AF_INET, # Internet
10 socket.SOCK_DGRAM) # UDP
11sock.bind((UDP_IP, UDP_PORT))
12
13#our client_id
14client_id = str(''.join(random.choice("abcdefghijklmnopqrstuvwxyz") for x in range(32)))
15
16print client_id
17a = 1;
18#send ping request to our DHT on localhost.
19sock.sendto("0012345678".decode("hex") + client_id, ('127.0.0.1', 33445))
20
21#print all packets received and respond to ping requests properly
22while True:
23 data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
24 print "received message:", data.encode('hex'), " From:", addr
25 #if we receive a ping request.
26 print data[0].encode('hex')
27 if data[0] == "00".decode('hex'):
28 print "Sending ping resp"
29 sock.sendto("01".decode('hex') + data[1:5] + client_id, addr)
30
31 #if we receive a get_nodes request.
32 if data[0] == "02".decode('hex'):
33 print "Sending getn resp"
34 #send send nodes packet with a couple 127.0.0.1 ips and ports.
35 #127.0.0.1:5000, 127.0.0.1:5001, 127.0.0.1:5002
36 sock.sendto("03".decode('hex') + data[1:5] + client_id + ("HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH" + "7F00000113880000".decode('hex') + "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH" + "7F00000113890000".decode('hex') + "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH" + "7F000001138A0000".decode('hex')), addr)
37
38 if data[0] == "10".decode('hex'):
39 print "Sending handshake resp"
40 sock.sendto("10".decode('hex') + data[1:5] + client_id[:4], addr)
41 if data[0] == "11".decode('hex'):
42 print "Sending SYNC resp"
43 a+=1
44 sock.sendto("11".decode('hex') + chr(a) + data[1:9], addr)
diff --git a/testing/toxic/dhtstatus.c b/testing/toxic/dhtstatus.c
index 66268900..e026a173 100644
--- a/testing/toxic/dhtstatus.c
+++ b/testing/toxic/dhtstatus.c
@@ -43,13 +43,13 @@ static void dhtstatus_onDraw(ToxWindow *self)
43 uint32_t i, j; 43 uint32_t i, j;
44 ipbuf ipbuf; 44 ipbuf ipbuf;
45 wprintw(self->window,"\n%llu ______________________ CLOSE LIST ________________________ ___ IP ADDR ___ _PRT_ LST PNG ____ SELF ____ _PRT_ LST\n\n", now); 45 wprintw(self->window,"\n%llu ______________________ CLOSE LIST ________________________ ___ IP ADDR ___ _PRT_ LST PNG ____ SELF ____ _PRT_ LST\n\n", now);
46 for(i = 0; i < CLIENT_ID_SIZE; i++) { 46 for(i = 0; i < 32; i++) { /*Number of nodes in closelist*/
47 Client_data * client = close_clientlist + i; 47 Client_data * client = close_clientlist + i;
48 if (i == num_selected) wattron(self->window, COLOR_PAIR(3)); 48 if (i == num_selected) wattron(self->window, COLOR_PAIR(3));
49 wprintw(self->window,"[%02i] ", i); 49 wprintw(self->window,"[%02i] ", i);
50 uint16_t port = ntohs(client->ip_port.port); 50 uint16_t port = ntohs(client->ip_port.port);
51 if(port) { 51 if(port) {
52 for(j = 0; j < 32; j++) 52 for(j = 0; j < CLIENT_ID_SIZE; j++)
53 wprintw(self->window, "%02hhx", client->client_id[j]); 53 wprintw(self->window, "%02hhx", client->client_id[j]);
54 54
55 printip(ipbuf, client->ip_port.ip); 55 printip(ipbuf, client->ip_port.ip);