mirror of
https://github.com/irungentoo/toxcore.git
synced 2024-03-22 13:30:51 +08:00
Fixed offline callback being called when connection timed out and died
without ever actually being connected.
This commit is contained in:
parent
62dad7b3f7
commit
b279a4a883
|
@ -224,23 +224,32 @@ static int handle_status(void *object, int number, uint8_t status)
|
||||||
if (!friend_con)
|
if (!friend_con)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
_Bool call_cb = 0;
|
||||||
|
|
||||||
if (status) { /* Went online. */
|
if (status) { /* Went online. */
|
||||||
|
call_cb = 1;
|
||||||
friend_con->status = FRIENDCONN_STATUS_CONNECTED;
|
friend_con->status = FRIENDCONN_STATUS_CONNECTED;
|
||||||
friend_con->ping_lastrecv = unix_time();
|
friend_con->ping_lastrecv = unix_time();
|
||||||
onion_set_friend_online(fr_c->onion_c, friend_con->onion_friendnum, status);
|
onion_set_friend_online(fr_c->onion_c, friend_con->onion_friendnum, status);
|
||||||
} else { /* Went offline. */
|
} else { /* Went offline. */
|
||||||
|
if (friend_con->status != FRIENDCONN_STATUS_CONNECTING) {
|
||||||
|
call_cb = 1;
|
||||||
|
friend_con->dht_ping_lastrecv = unix_time();
|
||||||
|
onion_set_friend_online(fr_c->onion_c, friend_con->onion_friendnum, status);
|
||||||
|
}
|
||||||
|
|
||||||
friend_con->status = FRIENDCONN_STATUS_CONNECTING;
|
friend_con->status = FRIENDCONN_STATUS_CONNECTING;
|
||||||
friend_con->crypt_connection_id = -1;
|
friend_con->crypt_connection_id = -1;
|
||||||
friend_con->dht_ping_lastrecv = unix_time();
|
|
||||||
onion_set_friend_online(fr_c->onion_c, friend_con->onion_friendnum, status);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int i;
|
if (call_cb) {
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
for (i = 0; i < MAX_FRIEND_CONNECTION_CALLBACKS; ++i) {
|
for (i = 0; i < MAX_FRIEND_CONNECTION_CALLBACKS; ++i) {
|
||||||
if (friend_con->callbacks[i].status_callback)
|
if (friend_con->callbacks[i].status_callback)
|
||||||
friend_con->callbacks[i].status_callback(friend_con->callbacks[i].status_callback_object,
|
friend_con->callbacks[i].status_callback(friend_con->callbacks[i].status_callback_object,
|
||||||
friend_con->callbacks[i].status_callback_id, status);
|
friend_con->callbacks[i].status_callback_id, status);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user