From 5817c2c888ec930b8adfca78cd4fd5b026a1ccfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20Malte=20Gr=C3=A4fje?= Date: Sun, 4 Aug 2013 01:46:54 +0200 Subject: [PATCH] fix for #288 nTox will now display a message if you try to accept a not yet received or already accepted friend request --- testing/nTox.c | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/testing/nTox.c b/testing/nTox.c index 15e209a9..f76c6c2a 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) @@ -229,15 +234,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(); } @@ -330,7 +341,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(); }