mirror of
https://github.com/irungentoo/toxcore.git
synced 2024-03-22 13:30:51 +08:00
client_id -> public_key
This commit is contained in:
parent
1ef94e58cf
commit
540db7ec37
|
@ -538,7 +538,7 @@ static void get_close_nodes_inner(const uint8_t *public_key, Node_format *nodes_
|
||||||
*num_nodes_ptr = num_nodes;
|
*num_nodes_ptr = num_nodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Find MAX_SENT_NODES nodes closest to the client_id for the send nodes request:
|
/* Find MAX_SENT_NODES nodes closest to the public_key for the send nodes request:
|
||||||
* put them in the nodes_list and return how many were found.
|
* put them in the nodes_list and return how many were found.
|
||||||
*
|
*
|
||||||
* TODO: For the love of based <your favorite deity, in doubt use "love"> make
|
* TODO: For the love of based <your favorite deity, in doubt use "love"> make
|
||||||
|
@ -546,28 +546,28 @@ static void get_close_nodes_inner(const uint8_t *public_key, Node_format *nodes_
|
||||||
*
|
*
|
||||||
* want_good : do we want only good nodes as checked with the hardening returned or not?
|
* want_good : do we want only good nodes as checked with the hardening returned or not?
|
||||||
*/
|
*/
|
||||||
static int get_somewhat_close_nodes(const DHT *dht, const uint8_t *client_id, Node_format *nodes_list,
|
static int get_somewhat_close_nodes(const DHT *dht, const uint8_t *public_key, Node_format *nodes_list,
|
||||||
sa_family_t sa_family, uint8_t is_LAN, uint8_t want_good)
|
sa_family_t sa_family, uint8_t is_LAN, uint8_t want_good)
|
||||||
{
|
{
|
||||||
uint32_t num_nodes = 0, i;
|
uint32_t num_nodes = 0, i;
|
||||||
get_close_nodes_inner(client_id, nodes_list, sa_family,
|
get_close_nodes_inner(public_key, nodes_list, sa_family,
|
||||||
dht->close_clientlist, LCLIENT_LIST, &num_nodes, is_LAN, want_good);
|
dht->close_clientlist, LCLIENT_LIST, &num_nodes, is_LAN, want_good);
|
||||||
|
|
||||||
/*TODO uncomment this when hardening is added to close friend clients
|
/*TODO uncomment this when hardening is added to close friend clients
|
||||||
for (i = 0; i < dht->num_friends; ++i)
|
for (i = 0; i < dht->num_friends; ++i)
|
||||||
get_close_nodes_inner(dht, client_id, nodes_list, sa_family,
|
get_close_nodes_inner(dht, public_key, nodes_list, sa_family,
|
||||||
dht->friends_list[i].client_list, MAX_FRIEND_CLIENTS,
|
dht->friends_list[i].client_list, MAX_FRIEND_CLIENTS,
|
||||||
&num_nodes, is_LAN, want_good);
|
&num_nodes, is_LAN, want_good);
|
||||||
*/
|
*/
|
||||||
for (i = 0; i < dht->num_friends; ++i)
|
for (i = 0; i < dht->num_friends; ++i)
|
||||||
get_close_nodes_inner(client_id, nodes_list, sa_family,
|
get_close_nodes_inner(public_key, nodes_list, sa_family,
|
||||||
dht->friends_list[i].client_list, MAX_FRIEND_CLIENTS,
|
dht->friends_list[i].client_list, MAX_FRIEND_CLIENTS,
|
||||||
&num_nodes, is_LAN, 0);
|
&num_nodes, is_LAN, 0);
|
||||||
|
|
||||||
return num_nodes;
|
return num_nodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
int get_close_nodes(const DHT *dht, const uint8_t *client_id, Node_format *nodes_list, sa_family_t sa_family,
|
int get_close_nodes(const DHT *dht, const uint8_t *public_key, Node_format *nodes_list, sa_family_t sa_family,
|
||||||
uint8_t is_LAN, uint8_t want_good)
|
uint8_t is_LAN, uint8_t want_good)
|
||||||
{
|
{
|
||||||
memset(nodes_list, 0, MAX_SENT_NODES * sizeof(Node_format));
|
memset(nodes_list, 0, MAX_SENT_NODES * sizeof(Node_format));
|
||||||
|
@ -575,7 +575,7 @@ int get_close_nodes(const DHT *dht, const uint8_t *client_id, Node_format *nodes
|
||||||
|
|
||||||
if (!dht->assoc)
|
if (!dht->assoc)
|
||||||
#endif
|
#endif
|
||||||
return get_somewhat_close_nodes(dht, client_id, nodes_list, sa_family, is_LAN, want_good);
|
return get_somewhat_close_nodes(dht, public_key, nodes_list, sa_family, is_LAN, want_good);
|
||||||
|
|
||||||
#ifdef ENABLE_ASSOC_DHT
|
#ifdef ENABLE_ASSOC_DHT
|
||||||
//TODO: assoc, sa_family 0 (don't care if ipv4 or ipv6) support.
|
//TODO: assoc, sa_family 0 (don't care if ipv4 or ipv6) support.
|
||||||
|
@ -586,14 +586,14 @@ int get_close_nodes(const DHT *dht, const uint8_t *client_id, Node_format *nodes
|
||||||
request.count = MAX_SENT_NODES;
|
request.count = MAX_SENT_NODES;
|
||||||
request.count_good = MAX_SENT_NODES - 2; /* allow 2 'indirect' nodes */
|
request.count_good = MAX_SENT_NODES - 2; /* allow 2 'indirect' nodes */
|
||||||
request.result = result;
|
request.result = result;
|
||||||
request.wanted_id = client_id;
|
request.wanted_id = public_key;
|
||||||
request.flags = (is_LAN ? LANOk : 0) + (sa_family == AF_INET ? ProtoIPv4 : ProtoIPv6);
|
request.flags = (is_LAN ? LANOk : 0) + (sa_family == AF_INET ? ProtoIPv4 : ProtoIPv6);
|
||||||
|
|
||||||
uint8_t num_found = Assoc_get_close_entries(dht->assoc, &request);
|
uint8_t num_found = Assoc_get_close_entries(dht->assoc, &request);
|
||||||
|
|
||||||
if (!num_found) {
|
if (!num_found) {
|
||||||
LOGGER_DEBUG("get_close_nodes(): Assoc_get_close_entries() returned zero nodes");
|
LOGGER_DEBUG("get_close_nodes(): Assoc_get_close_entries() returned zero nodes");
|
||||||
return get_somewhat_close_nodes(dht, client_id, nodes_list, sa_family, is_LAN, want_good);
|
return get_somewhat_close_nodes(dht, public_key, nodes_list, sa_family, is_LAN, want_good);
|
||||||
}
|
}
|
||||||
|
|
||||||
LOGGER_DEBUG("get_close_nodes(): Assoc_get_close_entries() returned %i 'direct' and %i 'indirect' nodes",
|
LOGGER_DEBUG("get_close_nodes(): Assoc_get_close_entries() returned %i 'direct' and %i 'indirect' nodes",
|
||||||
|
@ -605,7 +605,7 @@ int get_close_nodes(const DHT *dht, const uint8_t *client_id, Node_format *nodes
|
||||||
Client_data *client = result[i];
|
Client_data *client = result[i];
|
||||||
|
|
||||||
if (client) {
|
if (client) {
|
||||||
id_copy(nodes_list[num_returned].public_key, client->client_id);
|
id_copy(nodes_list[num_returned].public_key, client->public_key);
|
||||||
|
|
||||||
if (sa_family == AF_INET)
|
if (sa_family == AF_INET)
|
||||||
if (ipport_isset(&client->assoc4.ip_port)) {
|
if (ipport_isset(&client->assoc4.ip_port)) {
|
||||||
|
@ -797,7 +797,7 @@ int addto_lists(DHT *dht, IP_Port ip_port, const uint8_t *public_key)
|
||||||
|
|
||||||
DHT_Friend *friend = &dht->friends_list[i];
|
DHT_Friend *friend = &dht->friends_list[i];
|
||||||
|
|
||||||
if (memcmp(public_key, friend->public_key, CLIENT_ID_SIZE) == 0) {
|
if (memcmp(public_key, friend->public_key, crypto_box_PUBLICKEYBYTES) == 0) {
|
||||||
friend_foundip = friend;
|
friend_foundip = friend;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -806,7 +806,7 @@ int addto_lists(DHT *dht, IP_Port ip_port, const uint8_t *public_key)
|
||||||
} else {
|
} else {
|
||||||
DHT_Friend *friend = &dht->friends_list[i];
|
DHT_Friend *friend = &dht->friends_list[i];
|
||||||
|
|
||||||
if (memcmp(public_key, friend->public_key, CLIENT_ID_SIZE) == 0) {
|
if (memcmp(public_key, friend->public_key, crypto_box_PUBLICKEYBYTES) == 0) {
|
||||||
friend_foundip = friend;
|
friend_foundip = friend;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -840,9 +840,9 @@ int addto_lists(DHT *dht, IP_Port ip_port, const uint8_t *public_key)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If public_key is a friend or us, update ret_ip_port
|
/* If public_key is a friend or us, update ret_ip_port
|
||||||
* nodeclient_id is the id of the node that sent us this info.
|
* nodepublic_key is the id of the node that sent us this info.
|
||||||
*/
|
*/
|
||||||
static int returnedip_ports(DHT *dht, IP_Port ip_port, const uint8_t *public_key, const uint8_t *nodeclient_id)
|
static int returnedip_ports(DHT *dht, IP_Port ip_port, const uint8_t *public_key, const uint8_t *nodepublic_key)
|
||||||
{
|
{
|
||||||
uint32_t i, j;
|
uint32_t i, j;
|
||||||
uint64_t temp_time = unix_time();
|
uint64_t temp_time = unix_time();
|
||||||
|
@ -857,7 +857,7 @@ static int returnedip_ports(DHT *dht, IP_Port ip_port, const uint8_t *public_key
|
||||||
|
|
||||||
if (id_equal(public_key, dht->self_public_key)) {
|
if (id_equal(public_key, dht->self_public_key)) {
|
||||||
for (i = 0; i < LCLIENT_LIST; ++i) {
|
for (i = 0; i < LCLIENT_LIST; ++i) {
|
||||||
if (id_equal(nodeclient_id, dht->close_clientlist[i].public_key)) {
|
if (id_equal(nodepublic_key, dht->close_clientlist[i].public_key)) {
|
||||||
if (ip_port.ip.family == AF_INET) {
|
if (ip_port.ip.family == AF_INET) {
|
||||||
dht->close_clientlist[i].assoc4.ret_ip_port = ip_port;
|
dht->close_clientlist[i].assoc4.ret_ip_port = ip_port;
|
||||||
dht->close_clientlist[i].assoc4.ret_timestamp = temp_time;
|
dht->close_clientlist[i].assoc4.ret_timestamp = temp_time;
|
||||||
|
@ -874,7 +874,7 @@ static int returnedip_ports(DHT *dht, IP_Port ip_port, const uint8_t *public_key
|
||||||
for (i = 0; i < dht->num_friends; ++i) {
|
for (i = 0; i < dht->num_friends; ++i) {
|
||||||
if (id_equal(public_key, dht->friends_list[i].public_key)) {
|
if (id_equal(public_key, dht->friends_list[i].public_key)) {
|
||||||
for (j = 0; j < MAX_FRIEND_CLIENTS; ++j) {
|
for (j = 0; j < MAX_FRIEND_CLIENTS; ++j) {
|
||||||
if (id_equal(nodeclient_id, dht->friends_list[i].client_list[j].public_key)) {
|
if (id_equal(nodepublic_key, dht->friends_list[i].client_list[j].public_key)) {
|
||||||
if (ip_port.ip.family == AF_INET) {
|
if (ip_port.ip.family == AF_INET) {
|
||||||
dht->friends_list[i].client_list[j].assoc4.ret_ip_port = ip_port;
|
dht->friends_list[i].client_list[j].assoc4.ret_ip_port = ip_port;
|
||||||
dht->friends_list[i].client_list[j].assoc4.ret_timestamp = temp_time;
|
dht->friends_list[i].client_list[j].assoc4.ret_timestamp = temp_time;
|
||||||
|
@ -1047,7 +1047,7 @@ static int handle_getnodes(void *object, IP_Port source, const uint8_t *packet,
|
||||||
}
|
}
|
||||||
/* return 0 if no
|
/* return 0 if no
|
||||||
return 1 if yes */
|
return 1 if yes */
|
||||||
static uint8_t sent_getnode_to_node(DHT *dht, const uint8_t *client_id, IP_Port node_ip_port, uint64_t ping_id,
|
static uint8_t sent_getnode_to_node(DHT *dht, const uint8_t *public_key, IP_Port node_ip_port, uint64_t ping_id,
|
||||||
Node_format *sendback_node)
|
Node_format *sendback_node)
|
||||||
{
|
{
|
||||||
uint8_t data[sizeof(Node_format) * 2];
|
uint8_t data[sizeof(Node_format) * 2];
|
||||||
|
@ -1063,7 +1063,7 @@ static uint8_t sent_getnode_to_node(DHT *dht, const uint8_t *client_id, IP_Port
|
||||||
Node_format test;
|
Node_format test;
|
||||||
memcpy(&test, data, sizeof(Node_format));
|
memcpy(&test, data, sizeof(Node_format));
|
||||||
|
|
||||||
if (!ipport_equal(&test.ip_port, &node_ip_port) || memcmp(test.public_key, client_id, CLIENT_ID_SIZE) != 0)
|
if (!ipport_equal(&test.ip_port, &node_ip_port) || memcmp(test.public_key, public_key, crypto_box_PUBLICKEYBYTES) != 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user