forked from Green-Sky/tomato
Squashed 'external/toxcore/c-toxcore/' changes from 1828c5356..c9cdae001
c9cdae001 fix(toxav): remove extra copy of video frame on encode 4f6d4546b test: Improve the fake network library. a2581e700 refactor(toxcore): generate `Friend_Request` and `Dht_Nodes_Response` 2aaa11770 refactor(toxcore): use Tox_Memory in generated events 5c367452b test(toxcore): fix incorrect mutex in tox_scenario_get_time 8f92e710f perf: Add a timed limit of number of cookie requests. 695b6417a test: Add some more simulated network support. 815ae9ce9 test(toxcore): fix thread-safety in scenario framework 6d85c754e test(toxcore): add unit tests for net_crypto 9c22e79cc test(support): add SimulatedEnvironment for deterministic testing f34fcb195 chore: Update windows Dockerfile to debian stable (trixie). ece0e8980 fix(group_moderation): allow validating unsorted sanction list signatures a4fa754d7 refactor: rename struct Packet to struct Net_Packet d6f330f85 cleanup: Fix some warnings from coverity. e206bffa2 fix(group_chats): fix sync packets reverting topics 0e4715598 test: Add new scenario testing framework. 668291f44 refactor(toxcore): decouple Network_Funcs from sockaddr via IP_Port fc4396cef fix: potential division by zero in toxav and unsafe hex parsing 8e8b352ab refactor: Add nullable annotations to struct members. 7740bb421 refactor: decouple net_crypto from DHT 1936d4296 test: add benchmark for toxav audio and video 46bfdc2df fix: correct printf format specifiers for unsigned integers REVERT: 1828c5356 fix(toxav): remove extra copy of video frame on encode git-subtree-dir: external/toxcore/c-toxcore git-subtree-split: c9cdae001341e701fca980c9bb9febfeb95d2902
This commit is contained in:
40
toxav/msi.c
40
toxav/msi.c
@@ -54,19 +54,19 @@ typedef struct MSIMessage {
|
||||
MSIHeaderCapabilities capabilities;
|
||||
} MSIMessage;
|
||||
|
||||
static void msg_init(MSIMessage *dest, MSIRequest request);
|
||||
static void kill_call(const Logger *log, MSICall *call);
|
||||
static int msg_parse_in(const Logger *log, MSIMessage *dest, const uint8_t *data, uint16_t length);
|
||||
static uint8_t *msg_parse_header_out(MSIHeaderID id, uint8_t *dest, const uint8_t *value, uint8_t value_len,
|
||||
uint16_t *length);
|
||||
static int send_message(const Logger *log, MSISession *session, uint32_t friend_number, const MSIMessage *msg);
|
||||
static int send_error(const Logger *log, MSISession *session, uint32_t friend_number, MSIError error);
|
||||
static MSICall *get_call(MSISession *session, uint32_t friend_number);
|
||||
static MSICall *new_call(MSISession *session, uint32_t friend_number);
|
||||
static bool invoke_callback(const Logger *log, MSICall *call, MSICallbackID cb);
|
||||
static void handle_init(const Logger *log, MSICall *call, const MSIMessage *msg);
|
||||
static void handle_push(const Logger *log, MSICall *call, const MSIMessage *msg);
|
||||
static void handle_pop(const Logger *log, MSICall *call, const MSIMessage *msg);
|
||||
static void msg_init(MSIMessage *_Nonnull dest, MSIRequest request);
|
||||
static void kill_call(const Logger *_Nonnull log, MSICall *_Nonnull call);
|
||||
static int msg_parse_in(const Logger *_Nonnull log, MSIMessage *_Nonnull dest, const uint8_t *_Nonnull data, uint16_t length);
|
||||
static uint8_t *_Nonnull msg_parse_header_out(MSIHeaderID id, uint8_t *_Nonnull dest, const uint8_t *_Nonnull value, uint8_t value_len,
|
||||
uint16_t *_Nonnull length);
|
||||
static int send_message(const Logger *_Nonnull log, MSISession *_Nonnull session, uint32_t friend_number, const MSIMessage *_Nonnull msg);
|
||||
static int send_error(const Logger *_Nonnull log, MSISession *_Nonnull session, uint32_t friend_number, MSIError error);
|
||||
static MSICall *_Nullable get_call(MSISession *_Nonnull session, uint32_t friend_number);
|
||||
static MSICall *_Nullable new_call(MSISession *_Nonnull session, uint32_t friend_number);
|
||||
static bool invoke_callback(const Logger *_Nonnull log, MSICall *_Nonnull call, MSICallbackID cb);
|
||||
static void handle_init(const Logger *_Nonnull log, MSICall *_Nonnull call, const MSIMessage *_Nonnull msg);
|
||||
static void handle_push(const Logger *_Nonnull log, MSICall *_Nonnull call, const MSIMessage *_Nonnull msg);
|
||||
static void handle_pop(const Logger *_Nonnull log, MSICall *_Nonnull call, const MSIMessage *_Nonnull msg);
|
||||
|
||||
/*
|
||||
* Public functions
|
||||
@@ -321,7 +321,7 @@ static void msg_init(MSIMessage *dest, MSIRequest request)
|
||||
dest->request.value = request;
|
||||
}
|
||||
|
||||
static bool check_size(const Logger *log, const uint8_t *bytes, int *constraint, uint8_t size)
|
||||
static bool check_size(const Logger *_Nonnull log, const uint8_t *_Nonnull bytes, int *_Nonnull constraint, uint8_t size)
|
||||
{
|
||||
*constraint -= 2 + size;
|
||||
|
||||
@@ -339,7 +339,7 @@ static bool check_size(const Logger *log, const uint8_t *bytes, int *constraint,
|
||||
}
|
||||
|
||||
/** Assumes size == 1 */
|
||||
static bool check_enum_high(const Logger *log, const uint8_t *bytes, uint8_t enum_high)
|
||||
static bool check_enum_high(const Logger *_Nonnull log, const uint8_t *_Nonnull bytes, uint8_t enum_high)
|
||||
{
|
||||
if (bytes[2] > enum_high) {
|
||||
LOGGER_ERROR(log, "Failed enum high limit!");
|
||||
@@ -349,7 +349,7 @@ static bool check_enum_high(const Logger *log, const uint8_t *bytes, uint8_t enu
|
||||
return true;
|
||||
}
|
||||
|
||||
static const uint8_t *msg_parse_one(const Logger *log, MSIMessage *dest, const uint8_t *it, int *size_constraint)
|
||||
static const uint8_t *_Nullable msg_parse_one(const Logger *_Nonnull log, MSIMessage *_Nonnull dest, const uint8_t *_Nonnull it, int *_Nonnull size_constraint)
|
||||
{
|
||||
switch (*it) {
|
||||
case ID_REQUEST: {
|
||||
@@ -451,7 +451,7 @@ static int send_message(const Logger *log, MSISession *session, uint32_t friend_
|
||||
uint16_t size = 0;
|
||||
|
||||
if (msg->request.exists) {
|
||||
uint8_t cast = msg->request.value;
|
||||
const uint8_t cast = msg->request.value;
|
||||
it = msg_parse_header_out(ID_REQUEST, it, &cast,
|
||||
sizeof(cast), &size);
|
||||
} else {
|
||||
@@ -460,7 +460,7 @@ static int send_message(const Logger *log, MSISession *session, uint32_t friend_
|
||||
}
|
||||
|
||||
if (msg->error.exists) {
|
||||
uint8_t cast = msg->error.value;
|
||||
const uint8_t cast = msg->error.value;
|
||||
it = msg_parse_header_out(ID_ERROR, it, &cast,
|
||||
sizeof(cast), &size);
|
||||
}
|
||||
@@ -501,7 +501,7 @@ static int send_error(const Logger *log, MSISession *session, uint32_t friend_nu
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int invoke_callback_inner(const Logger *log, MSICall *call, MSICallbackID id)
|
||||
static int invoke_callback_inner(const Logger *_Nonnull log, MSICall *_Nonnull call, MSICallbackID id)
|
||||
{
|
||||
MSISession *session = call->session;
|
||||
LOGGER_DEBUG(log, "invoking callback function: %u", id);
|
||||
@@ -671,7 +671,7 @@ CLEAR_CONTAINER:
|
||||
}
|
||||
|
||||
|
||||
static bool try_handle_init(const Logger *log, MSICall *call, const MSIMessage *msg)
|
||||
static bool try_handle_init(const Logger *_Nonnull log, MSICall *_Nonnull call, const MSIMessage *_Nonnull msg)
|
||||
{
|
||||
if (!msg->capabilities.exists) {
|
||||
LOGGER_WARNING(log, "Session: %p Invalid capabilities on 'init'", (void *)call->session);
|
||||
|
||||
Reference in New Issue
Block a user