diff options
author | irungentoo <irungentoo@gmail.com> | 2013-07-15 08:16:38 -0700 |
---|---|---|
committer | irungentoo <irungentoo@gmail.com> | 2013-07-15 08:16:38 -0700 |
commit | 619ecb0bb35f62d39afdc91b87f5c267f905ec0c (patch) | |
tree | 4f197a641a4fcb8b60519c44368265454fc7f48a /core/Messenger.c | |
parent | 7674e6572647a6c44daf2f064ef3c489c9878722 (diff) | |
parent | 859f31c160634547ecea8a0c857d55a1e68d1cc9 (diff) |
Merge pull request #43 from Jeffail/master
Mostly superficial changes
Diffstat (limited to 'core/Messenger.c')
-rw-r--r-- | core/Messenger.c | 43 |
1 files changed, 18 insertions, 25 deletions
diff --git a/core/Messenger.c b/core/Messenger.c index 94b4c740..85c5df95 100644 --- a/core/Messenger.c +++ b/core/Messenger.c | |||
@@ -33,20 +33,14 @@ typedef struct | |||
33 | uint8_t status;//0 if no friend, 1 if added, 2 if friend request sent, 3 if confirmed friend, 4 if online. | 33 | uint8_t status;//0 if no friend, 1 if added, 2 if friend request sent, 3 if confirmed friend, 4 if online. |
34 | uint8_t info[MAX_DATA_SIZE]; //the data that is sent during the friend requests we do | 34 | uint8_t info[MAX_DATA_SIZE]; //the data that is sent during the friend requests we do |
35 | uint16_t info_size; //length of the info | 35 | uint16_t info_size; //length of the info |
36 | |||
37 | }Friend; | 36 | }Friend; |
38 | 37 | ||
39 | 38 | ||
40 | |||
41 | |||
42 | |||
43 | #define MAX_NUM_FRIENDS 256 | 39 | #define MAX_NUM_FRIENDS 256 |
44 | 40 | ||
45 | static Friend friendlist[MAX_NUM_FRIENDS]; | 41 | static Friend friendlist[MAX_NUM_FRIENDS]; |
46 | 42 | ||
47 | |||
48 | static uint32_t numfriends; | 43 | static uint32_t numfriends; |
49 | |||
50 | 44 | ||
51 | //return the friend id associated to that public key. | 45 | //return the friend id associated to that public key. |
52 | //return -1 if no such friend | 46 | //return -1 if no such friend |
@@ -66,6 +60,7 @@ int getfriend_id(uint8_t * client_id) | |||
66 | return -1; | 60 | return -1; |
67 | } | 61 | } |
68 | 62 | ||
63 | |||
69 | //copies the public key associated to that friend id into client_id buffer. | 64 | //copies the public key associated to that friend id into client_id buffer. |
70 | //make sure that client_id is of size CLIENT_ID_SIZE. | 65 | //make sure that client_id is of size CLIENT_ID_SIZE. |
71 | //returns 0 if success | 66 | //returns 0 if success |
@@ -94,8 +89,8 @@ int getclient_id(int friend_id, uint8_t * client_id) | |||
94 | //return -1 if failure. | 89 | //return -1 if failure. |
95 | int m_addfriend(uint8_t * client_id, uint8_t * data, uint16_t length) | 90 | int m_addfriend(uint8_t * client_id, uint8_t * data, uint16_t length) |
96 | { | 91 | { |
97 | if(length == 0 || length > MAX_DATA_SIZE - 1 - crypto_box_PUBLICKEYBYTES - crypto_box_NONCEBYTES | 92 | if(length == 0 || length >= |
98 | - crypto_box_BOXZEROBYTES + crypto_box_ZEROBYTES) | 93 | (MAX_DATA_SIZE - crypto_box_PUBLICKEYBYTES - crypto_box_NONCEBYTES - crypto_box_BOXZEROBYTES + crypto_box_ZEROBYTES)) |
99 | { | 94 | { |
100 | return -1; | 95 | return -1; |
101 | } | 96 | } |
@@ -105,7 +100,7 @@ int m_addfriend(uint8_t * client_id, uint8_t * data, uint16_t length) | |||
105 | return -1; | 100 | return -1; |
106 | } | 101 | } |
107 | uint32_t i; | 102 | uint32_t i; |
108 | for(i = 0; i < (numfriends + 1); i++) | 103 | for(i = 0; i <= numfriends; i++) |
109 | { | 104 | { |
110 | if(friendlist[i].status == 0) | 105 | if(friendlist[i].status == 0) |
111 | { | 106 | { |
@@ -131,7 +126,7 @@ int m_addfriend_norequest(uint8_t * client_id) | |||
131 | return -1; | 126 | return -1; |
132 | } | 127 | } |
133 | uint32_t i; | 128 | uint32_t i; |
134 | for(i = 0; i < (numfriends + 1); i++) | 129 | for(i = 0; i <= numfriends; i++) |
135 | { | 130 | { |
136 | if(friendlist[i].status == 0) | 131 | if(friendlist[i].status == 0) |
137 | { | 132 | { |
@@ -205,7 +200,6 @@ int m_sendmessage(int friendnumber, uint8_t * message, uint32_t length) | |||
205 | temp[0] = 64; | 200 | temp[0] = 64; |
206 | memcpy(temp + 1, message, length); | 201 | memcpy(temp + 1, message, length); |
207 | return write_cryptpacket(friendlist[friendnumber].crypt_connection_id, temp, length + 1); | 202 | return write_cryptpacket(friendlist[friendnumber].crypt_connection_id, temp, length + 1); |
208 | |||
209 | } | 203 | } |
210 | 204 | ||
211 | 205 | ||
@@ -236,7 +230,6 @@ void initMessenger() | |||
236 | IP ip; | 230 | IP ip; |
237 | ip.i = 0; | 231 | ip.i = 0; |
238 | init_networking(ip, PORT); | 232 | init_networking(ip, PORT); |
239 | |||
240 | } | 233 | } |
241 | 234 | ||
242 | static void doFriends() | 235 | static void doFriends() |
@@ -261,19 +254,21 @@ static void doFriends() | |||
261 | if(friendlist[i].status == 2 || friendlist[i].status == 3) | 254 | if(friendlist[i].status == 2 || friendlist[i].status == 3) |
262 | { | 255 | { |
263 | check_friendrequest(friendlist[i].friend_request_id);//for now this is used to kill the friend request | 256 | check_friendrequest(friendlist[i].friend_request_id);//for now this is used to kill the friend request |
264 | |||
265 | IP_Port friendip = DHT_getfriendip(friendlist[i].client_id); | 257 | IP_Port friendip = DHT_getfriendip(friendlist[i].client_id); |
266 | if(is_cryptoconnected(friendlist[i].crypt_connection_id) == 0 && friendip.ip.i > 1) | 258 | switch(is_cryptoconnected(friendlist[i].crypt_connection_id)) |
267 | { | ||
268 | friendlist[i].crypt_connection_id = crypto_connect(friendlist[i].client_id, friendip); | ||
269 | } | ||
270 | if(is_cryptoconnected(friendlist[i].crypt_connection_id) == 3)//if connection is established. | ||
271 | { | 259 | { |
272 | friendlist[i].status = 4; | 260 | case 0: |
273 | } | 261 | if (friendip.ip.i > 1) |
274 | if(is_cryptoconnected(friendlist[i].crypt_connection_id) == 4) | 262 | friendlist[i].crypt_connection_id = crypto_connect(friendlist[i].client_id, friendip); |
275 | { | 263 | break; |
276 | crypto_kill(friendlist[i].crypt_connection_id); | 264 | case 3: // Connection is established |
265 | friendlist[i].status = 4; | ||
266 | break; | ||
267 | case 4: | ||
268 | crypto_kill(friendlist[i].crypt_connection_id); | ||
269 | break; | ||
270 | default: | ||
271 | break; | ||
277 | } | 272 | } |
278 | } | 273 | } |
279 | while(friendlist[i].status == 4) | 274 | while(friendlist[i].status == 4) |
@@ -308,9 +303,7 @@ static void doFriendRequest() | |||
308 | if(len >= 0) | 303 | if(len >= 0) |
309 | { | 304 | { |
310 | (*friend_request)(public_key, temp, len); | 305 | (*friend_request)(public_key, temp, len); |
311 | |||
312 | } | 306 | } |
313 | |||
314 | } | 307 | } |
315 | 308 | ||
316 | 309 | ||