diff options
author | irungentoo <irungentoo@gmail.com> | 2014-12-11 13:54:55 -0500 |
---|---|---|
committer | irungentoo <irungentoo@gmail.com> | 2014-12-11 13:54:55 -0500 |
commit | d7f57132772e69c2f9f3596c6525d9d37393f9be (patch) | |
tree | b625a1395d2ea97f1ab87d06340a203d9e14832f /toxcore/friend_connection.c | |
parent | 4eeeb8e9abb4de9522f46bc8f2c52fb34653776f (diff) |
Fixed crash when connection was killed during the packet callback.
Diffstat (limited to 'toxcore/friend_connection.c')
-rw-r--r-- | toxcore/friend_connection.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/toxcore/friend_connection.c b/toxcore/friend_connection.c index aaffe02f..894ba61a 100644 --- a/toxcore/friend_connection.c +++ b/toxcore/friend_connection.c | |||
@@ -274,6 +274,11 @@ static int handle_packet(void *object, int number, uint8_t *data, uint16_t lengt | |||
274 | if (friend_con->callbacks[i].data_callback) | 274 | if (friend_con->callbacks[i].data_callback) |
275 | friend_con->callbacks[i].data_callback(friend_con->callbacks[i].data_callback_object, | 275 | friend_con->callbacks[i].data_callback(friend_con->callbacks[i].data_callback_object, |
276 | friend_con->callbacks[i].data_callback_id, data, length); | 276 | friend_con->callbacks[i].data_callback_id, data, length); |
277 | |||
278 | friend_con = get_conn(fr_c, number); | ||
279 | |||
280 | if (!friend_con) | ||
281 | return -1; | ||
277 | } | 282 | } |
278 | 283 | ||
279 | return 0; | 284 | return 0; |
@@ -296,6 +301,11 @@ static int handle_lossy_packet(void *object, int number, const uint8_t *data, ui | |||
296 | if (friend_con->callbacks[i].lossy_data_callback) | 301 | if (friend_con->callbacks[i].lossy_data_callback) |
297 | friend_con->callbacks[i].lossy_data_callback(friend_con->callbacks[i].lossy_data_callback_object, | 302 | friend_con->callbacks[i].lossy_data_callback(friend_con->callbacks[i].lossy_data_callback_object, |
298 | friend_con->callbacks[i].lossy_data_callback_id, data, length); | 303 | friend_con->callbacks[i].lossy_data_callback_id, data, length); |
304 | |||
305 | friend_con = get_conn(fr_c, number); | ||
306 | |||
307 | if (!friend_con) | ||
308 | return -1; | ||
299 | } | 309 | } |
300 | 310 | ||
301 | return 0; | 311 | return 0; |