diff --git a/testing/nTox.c b/testing/nTox.c index ec597bc3..fe91b1fa 100644 --- a/testing/nTox.c +++ b/testing/nTox.c @@ -42,7 +42,12 @@ char *help = "[i] commands:\n/f ID (to add friend)\n/m friendnumber message " "name)\n/q (to quit)"; int x, y; -uint8_t pending_requests[256][CLIENT_ID_SIZE]; +typedef struct { + uint8_t id[CLIENT_ID_SIZE]; + uint8_t accepted; +} Friend_request; + +Friend_request pending_requests[256]; uint8_t num_requests = 0; void get_id(char *data) @@ -231,15 +236,21 @@ void line_eval(char *line) else if (inpt_command == 'a') { uint8_t numf = atoi(line + 3); char numchar[100]; - int num = m_addfriend_norequest(pending_requests[numf]); - if (num != -1) { - sprintf(numchar, "[i] friend request %u accepted", numf); - new_lines(numchar); - sprintf(numchar, "[i] added friendnumber %d", num); + if (numf >= num_requests || pending_requests[numf].accepted) { + sprintf(numchar,"[i] you either didn't receive that request or you already accepted it"); new_lines(numchar); } else { - sprintf(numchar, "[i] failed to add friend"); - new_lines(numchar); + int num = m_addfriend_norequest(pending_requests[numf].id); + if (num != -1) { + pending_requests[numf].accepted = 1; + sprintf(numchar, "[i] friend request %u accepted", numf); + new_lines(numchar); + sprintf(numchar, "[i] added friendnumber %d", num); + new_lines(numchar); + } else { + sprintf(numchar, "[i] failed to add friend"); + new_lines(numchar); + } } do_refresh(); } @@ -332,7 +343,8 @@ void print_request(uint8_t *public_key, uint8_t *data, uint16_t length) char numchar[100]; sprintf(numchar, "[i] accept request with /a %u", num_requests); new_lines(numchar); - memcpy(pending_requests[num_requests], public_key, CLIENT_ID_SIZE); + memcpy(pending_requests[num_requests].id, public_key, CLIENT_ID_SIZE); + pending_requests[num_requests].accepted = 0; ++num_requests; do_refresh(); } diff --git a/testing/nTox_win32.c b/testing/nTox_win32.c index 5501ecf5..f3c7a188 100644 --- a/testing/nTox_win32.c +++ b/testing/nTox_win32.c @@ -26,7 +26,12 @@ #include -uint8_t pending_requests[256][CLIENT_ID_SIZE]; +typedef struct { + uint8_t id[CLIENT_ID_SIZE]; + uint8_t accepted; +} Friend_request; + +Friend_request pending_requests[256]; uint8_t num_requests = 0; uint32_t maxnumfriends; @@ -51,7 +56,8 @@ void print_request(uint8_t *public_key, uint8_t *data, uint16_t length) char numchar[100]; sprintf(numchar, "\n[i] accept request with /a %u\n\n", num_requests); printf(numchar); - memcpy(pending_requests[num_requests], public_key, CLIENT_ID_SIZE); + memcpy(pending_requests[num_requests].id, public_key, CLIENT_ID_SIZE); + pending_requests[num_requests].accepted = 0; ++num_requests; } @@ -287,10 +293,21 @@ void accept_friend_request() friend_request_received = 0; uint8_t numf = atoi(line + 3); char numchar[100]; - int num = m_addfriend_norequest(pending_requests[numf]); - sprintf(numchar, "\n[i] Added friendnumber: %d\n\n", num); - printf(numchar); - ++maxnumfriends; + if (numf >= num_requests || pending_requests[numf].accepted) { + sprintf(numchar, "\n[i] you either didn't receive that request or you already accepted it"); + printf(numchar); + } else { + int num = m_addfriend_norequest(pending_requests[numf].id); + if (num != -1) { + pending_requests[numf].accepted = 1; + sprintf(numchar, "\n[i] Added friendnumber: %d\n\n", num); + printf(numchar); + ++maxnumfriends; + } else { + sprintf(numchar, "[i] failed to add friend"); + printf(numchar); + } + } } void line_eval(char* line)