mirror of
https://github.com/irungentoo/toxcore.git
synced 2024-03-22 13:30:51 +08:00
commit
ef2e0c7aad
|
@ -34,29 +34,27 @@ int send_friendrequest(uint8_t * public_key, uint8_t * data, uint32_t length)
|
|||
{
|
||||
uint8_t packet[MAX_DATA_SIZE];
|
||||
int len = create_request(packet, public_key, data, length, 32); /* 32 is friend request packet id */
|
||||
|
||||
if(len == -1)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
IP_Port ip_port = DHT_getfriendip(public_key);
|
||||
|
||||
if(ip_port.ip.i == 1)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(ip_port.ip.i != 0)
|
||||
{
|
||||
if(sendpacket(ip_port, packet, len) != -1)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
int num = route_tofriend(public_key, packet, len);
|
||||
|
||||
if(num == 0)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
return num;
|
||||
}
|
||||
|
||||
|
@ -83,9 +81,7 @@ static uint16_t recieved_requests_index;
|
|||
static void addto_recievedlist(uint8_t * client_id)
|
||||
{
|
||||
if(recieved_requests_index >= MAX_RECIEVED_STORED)
|
||||
{
|
||||
recieved_requests_index = 0;
|
||||
}
|
||||
|
||||
memcpy(recieved_requests[recieved_requests_index], client_id, crypto_box_PUBLICKEYBYTES);
|
||||
++recieved_requests_index;
|
||||
|
@ -96,13 +92,11 @@ static void addto_recievedlist(uint8_t * client_id)
|
|||
static int request_recieved(uint8_t * client_id)
|
||||
{
|
||||
uint32_t i;
|
||||
|
||||
for(i = 0; i < MAX_RECIEVED_STORED; ++i)
|
||||
{
|
||||
if(memcmp(recieved_requests[i], client_id, crypto_box_PUBLICKEYBYTES) == 0)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -114,36 +108,27 @@ int friendreq_handlepacket(uint8_t * packet, uint32_t length, IP_Port source)
|
|||
{
|
||||
if(length <= crypto_box_PUBLICKEYBYTES * 2 + crypto_box_NONCEBYTES + 1 + ENCRYPTION_PADDING &&
|
||||
length > MAX_DATA_SIZE + ENCRYPTION_PADDING)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
if(memcmp(packet + 1, self_public_key, crypto_box_PUBLICKEYBYTES) == 0)//check if request is for us.
|
||||
if(memcmp(packet + 1, self_public_key, crypto_box_PUBLICKEYBYTES) == 0) /* check if request is for us. */
|
||||
{
|
||||
if(handle_friendrequest_isset == 0)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
uint8_t public_key[crypto_box_PUBLICKEYBYTES];
|
||||
uint8_t data[MAX_DATA_SIZE];
|
||||
int len = handle_request(public_key, data, packet, length);
|
||||
|
||||
if(len == -1)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
if(request_recieved(public_key))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
addto_recievedlist(public_key);
|
||||
(*handle_friendrequest)(public_key, data, len);
|
||||
}
|
||||
else//if request is not for us, try routing it.
|
||||
{
|
||||
else /* if request is not for us, try routing it. */
|
||||
if(route_packet(packet + 1, packet, length) == length)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user