Moved some checks around

This commit is contained in:
Maxim Biro 2013-08-09 16:28:12 -04:00
parent 19bbed475d
commit c6d06ae6ee

View File

@ -56,7 +56,7 @@ static uint32_t numfriends;
static void set_friend_status(int friendnumber, uint8_t status);
static int write_cryptpacket_id(int crypt_connection_id, uint8_t packet_id, uint8_t *data, uint32_t length);
static int write_cryptpacket_id(int friendnumber, uint8_t packet_id, uint8_t *data, uint32_t length);
/* 1 if we are online
0 if we are offline
@ -235,16 +235,11 @@ uint32_t m_sendmessage(int friendnumber, uint8_t *message, uint32_t length)
uint32_t m_sendmessage_withid(int friendnumber, uint32_t theid, uint8_t *message, uint32_t length)
{
if (friendnumber < 0 || friendnumber >= numfriends)
return 0;
if (length >= (MAX_DATA_SIZE - sizeof(theid)) || friendlist[friendnumber].status != FRIEND_ONLINE)
/* this does not mean the maximum message length is MAX_DATA_SIZE - 1, it is actually 17 bytes less. */
return 0;
uint8_t temp[MAX_DATA_SIZE];
theid = htonl(theid);
memcpy(temp, &theid, sizeof(theid));
memcpy(temp + sizeof(theid), message, length);
return write_cryptpacket_id(friendlist[friendnumber].crypt_connection_id, PACKET_ID_MESSAGE, temp, length + sizeof(theid));
return write_cryptpacket_id(friendnumber, PACKET_ID_MESSAGE, temp, length + sizeof(theid));
}
/* send an action to an online friend
@ -252,11 +247,7 @@ uint32_t m_sendmessage_withid(int friendnumber, uint32_t theid, uint8_t *message
return 0 if it was not */
int m_sendaction(int friendnumber, uint8_t *action, uint32_t length)
{
if (friendnumber < 0 || friendnumber >= numfriends)
return 0;
if (length >= MAX_DATA_SIZE || friendlist[friendnumber].status != FRIEND_ONLINE)
return 0;
return write_cryptpacket_id(friendlist[friendnumber].crypt_connection_id, PACKET_ID_ACTION, action, length);
return write_cryptpacket_id(friendnumber, PACKET_ID_ACTION, action, length);
}
/* send a name packet to friendnumber
@ -265,7 +256,7 @@ static int m_sendname(int friendnumber, uint8_t * name, uint16_t length)
{
if(length > MAX_NAME_LENGTH || length == 0)
return 0;
return write_cryptpacket_id(friendlist[friendnumber].crypt_connection_id, PACKET_ID_NICKNAME, name, length);
return write_cryptpacket_id(friendnumber, PACKET_ID_NICKNAME, name, length);
}
/* set the name of a friend
@ -393,12 +384,12 @@ USERSTATUS m_get_self_userstatus(void)
static int send_statusmessage(int friendnumber, uint8_t * status, uint16_t length)
{
return write_cryptpacket_id(friendlist[friendnumber].crypt_connection_id, PACKET_ID_STATUSMESSAGE, status, length);
return write_cryptpacket_id(friendnumber, PACKET_ID_STATUSMESSAGE, status, length);
}
static int send_userstatus(int friendnumber, USERSTATUS status)
{
return write_cryptpacket_id(friendlist[friendnumber].crypt_connection_id, PACKET_ID_USERSTATUS, (uint8_t*)&status, sizeof(USERSTATUS));
return write_cryptpacket_id(friendnumber, PACKET_ID_USERSTATUS, (uint8_t*)&status, sizeof(USERSTATUS));
}
static int set_friend_statusmessage(int friendnumber, uint8_t * status, uint16_t length)
@ -501,12 +492,16 @@ static void set_friend_status(int friendnumber, uint8_t status)
friendlist[friendnumber].status = status;
}
static int write_cryptpacket_id(int crypt_connection_id, uint8_t packet_id, uint8_t *data, uint32_t length)
static int write_cryptpacket_id(int friendnumber, uint8_t packet_id, uint8_t *data, uint32_t length)
{
if (friendnumber < 0 || friendnumber >= numfriends)
return 0;
if (length >= MAX_DATA_SIZE || friendlist[friendnumber].status != FRIEND_ONLINE)
return 0;
uint8_t packet[length + 1];
packet[0] = packet_id;
memcpy(packet + 1, data, length);
return write_cryptpacket(crypt_connection_id, packet, length + 1);
return write_cryptpacket(friendlist[friendnumber].crypt_connection_id, packet, length + 1);
}
#define PORT 33445
@ -611,7 +606,7 @@ static void doFriends(void)
}
case PACKET_ID_MESSAGE: {
if (friendlist[i].receives_read_receipts) {
write_cryptpacket_id(friendlist[i].crypt_connection_id, PACKET_ID_RECEIPT, temp + 1, 4);
write_cryptpacket_id(i, PACKET_ID_RECEIPT, temp + 1, 4);
}
if (friend_message_isset)
(*friend_message)(i, temp + 5, len - 5);