mirror of
https://github.com/irungentoo/toxcore.git
synced 2024-03-22 13:30:51 +08:00
Fixed one case of the connection callback not getting called on reconnection.
This commit is contained in:
parent
422e74424a
commit
6a1efc32e6
|
@ -292,30 +292,6 @@ static void change_dht_pk(Friend_Connections *fr_c, int friendcon_id, const uint
|
||||||
memcpy(friend_con->dht_temp_pk, dht_public_key, crypto_box_PUBLICKEYBYTES);
|
memcpy(friend_con->dht_temp_pk, dht_public_key, crypto_box_PUBLICKEYBYTES);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Callback for dht public key changes. */
|
|
||||||
static void dht_pk_callback(void *object, int32_t number, const uint8_t *dht_public_key)
|
|
||||||
{
|
|
||||||
Friend_Connections *fr_c = object;
|
|
||||||
Friend_Conn *friend_con = get_conn(fr_c, number);
|
|
||||||
|
|
||||||
if (!friend_con)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (memcmp(friend_con->dht_temp_pk, dht_public_key, crypto_box_PUBLICKEYBYTES) == 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
change_dht_pk(fr_c, number, dht_public_key);
|
|
||||||
|
|
||||||
/* if pk changed, create a new connection.*/
|
|
||||||
if (friend_con->crypt_connection_id != -1) {
|
|
||||||
crypto_kill(fr_c->net_crypto, friend_con->crypt_connection_id);
|
|
||||||
friend_con->crypt_connection_id = -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
friend_new_connection(fr_c, number);
|
|
||||||
onion_set_friend_DHT_pubkey(fr_c->onion_c, friend_con->onion_friendnum, dht_public_key);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int handle_status(void *object, int number, uint8_t status)
|
static int handle_status(void *object, int number, uint8_t status)
|
||||||
{
|
{
|
||||||
Friend_Connections *fr_c = object;
|
Friend_Connections *fr_c = object;
|
||||||
|
@ -356,6 +332,31 @@ static int handle_status(void *object, int number, uint8_t status)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Callback for dht public key changes. */
|
||||||
|
static void dht_pk_callback(void *object, int32_t number, const uint8_t *dht_public_key)
|
||||||
|
{
|
||||||
|
Friend_Connections *fr_c = object;
|
||||||
|
Friend_Conn *friend_con = get_conn(fr_c, number);
|
||||||
|
|
||||||
|
if (!friend_con)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (memcmp(friend_con->dht_temp_pk, dht_public_key, crypto_box_PUBLICKEYBYTES) == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
change_dht_pk(fr_c, number, dht_public_key);
|
||||||
|
|
||||||
|
/* if pk changed, create a new connection.*/
|
||||||
|
if (friend_con->crypt_connection_id != -1) {
|
||||||
|
crypto_kill(fr_c->net_crypto, friend_con->crypt_connection_id);
|
||||||
|
friend_con->crypt_connection_id = -1;
|
||||||
|
handle_status(object, number, 0); /* Going offline. */
|
||||||
|
}
|
||||||
|
|
||||||
|
friend_new_connection(fr_c, number);
|
||||||
|
onion_set_friend_DHT_pubkey(fr_c->onion_c, friend_con->onion_friendnum, dht_public_key);
|
||||||
|
}
|
||||||
|
|
||||||
static int handle_packet(void *object, int number, uint8_t *data, uint16_t length)
|
static int handle_packet(void *object, int number, uint8_t *data, uint16_t length)
|
||||||
{
|
{
|
||||||
if (length == 0)
|
if (length == 0)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user