From 843171fbc8e0cb12c14fac39bef15e596f44bef1 Mon Sep 17 00:00:00 2001 From: mannol Date: Fri, 16 May 2014 19:56:40 +0200 Subject: [PATCH] This works. --- auto_tests/toxav_basic_test.c | 20 ++--- auto_tests/toxav_many_test.c | 20 ++--- toxav/media.c | 5 +- toxav/msi.c | 156 +++++++++++++++------------------- toxav/msi.h | 20 ++--- toxav/rtp.c | 36 +------- toxav/toxav.c | 72 ++++++++++------ toxav/toxav.h | 44 +++++----- toxcore/Messenger.c | 10 +-- toxcore/logger.c | 12 +-- toxcore/logger.h | 2 +- toxcore/network.c | 2 +- 12 files changed, 185 insertions(+), 214 deletions(-) diff --git a/auto_tests/toxav_basic_test.c b/auto_tests/toxav_basic_test.c index c8ebd4975..c01625828 100644 --- a/auto_tests/toxav_basic_test.c +++ b/auto_tests/toxav_basic_test.c @@ -58,7 +58,7 @@ void accept_friend_request(Tox *m, uint8_t *public_key, uint8_t *data, uint16_t /******************************************************************************/ -void callback_recv_invite ( uint32_t call_index, void *_arg ) +void callback_recv_invite ( int32_t call_index, void *_arg ) { Status *cast = _arg; @@ -66,14 +66,14 @@ void callback_recv_invite ( uint32_t call_index, void *_arg ) cast->Bob.status = Ringing; cast->Bob.call_index = call_index; } -void callback_recv_ringing ( uint32_t call_index, void *_arg ) +void callback_recv_ringing ( int32_t call_index, void *_arg ) { Status *cast = _arg; /* Alice always sends invite */ cast->Alice.status = Ringing; } -void callback_recv_starting ( uint32_t call_index, void *_arg ) +void callback_recv_starting ( int32_t call_index, void *_arg ) { Status *cast = _arg; @@ -82,7 +82,7 @@ void callback_recv_starting ( uint32_t call_index, void *_arg ) cast->Alice.status = InCall; toxav_prepare_transmission(cast->Alice.av, call_index, &muhcaps, 1); } -void callback_recv_ending ( uint32_t call_index, void *_arg ) +void callback_recv_ending ( int32_t call_index, void *_arg ) { Status *cast = _arg; @@ -95,12 +95,12 @@ void callback_recv_ending ( uint32_t call_index, void *_arg ) } } -void callback_recv_error ( uint32_t call_index, void *_arg ) +void callback_recv_error ( int32_t call_index, void *_arg ) { ck_assert_msg(0, "AV internal error"); } -void callback_call_started ( uint32_t call_index, void *_arg ) +void callback_call_started ( int32_t call_index, void *_arg ) { Status *cast = _arg; @@ -109,14 +109,14 @@ void callback_call_started ( uint32_t call_index, void *_arg ) cast->Bob.status = InCall; toxav_prepare_transmission(cast->Bob.av, call_index, &muhcaps, 1); } -void callback_call_canceled ( uint32_t call_index, void *_arg ) +void callback_call_canceled ( int32_t call_index, void *_arg ) { Status *cast = _arg; printf ( "Call Canceled for Bob!\n" ); cast->Bob.status = Cancel; } -void callback_call_rejected ( uint32_t call_index, void *_arg ) +void callback_call_rejected ( int32_t call_index, void *_arg ) { Status *cast = _arg; @@ -125,7 +125,7 @@ void callback_call_rejected ( uint32_t call_index, void *_arg ) /* If Bob rejects, call is ended for alice and she sends ending */ cast->Alice.status = Rejected; } -void callback_call_ended ( uint32_t call_index, void *_arg ) +void callback_call_ended ( int32_t call_index, void *_arg ) { Status *cast = _arg; @@ -133,7 +133,7 @@ void callback_call_ended ( uint32_t call_index, void *_arg ) cast->Bob.status = Ended; } -void callback_requ_timeout ( uint32_t call_index, void *_arg ) +void callback_requ_timeout ( int32_t call_index, void *_arg ) { ck_assert_msg(0, "No answer!"); } diff --git a/auto_tests/toxav_many_test.c b/auto_tests/toxav_many_test.c index 77f3717e5..b499b439b 100644 --- a/auto_tests/toxav_many_test.c +++ b/auto_tests/toxav_many_test.c @@ -60,62 +60,62 @@ void accept_friend_request(Tox *m, uint8_t *public_key, uint8_t *data, uint16_t /******************************************************************************/ -void callback_recv_invite ( uint32_t call_index, void *_arg ) +void callback_recv_invite ( int32_t call_index, void *_arg ) {/* Status *cast = _arg; cast->calls[call_index].Callee.status = Ringing;*/ } -void callback_recv_ringing ( uint32_t call_index, void *_arg ) +void callback_recv_ringing ( int32_t call_index, void *_arg ) { Status *cast = _arg; cast->calls[call_index].Caller.status = Ringing; } -void callback_recv_starting ( uint32_t call_index, void *_arg ) +void callback_recv_starting ( int32_t call_index, void *_arg ) { Status *cast = _arg; cast->calls[call_index].Caller.status = InCall; } -void callback_recv_ending ( uint32_t call_index, void *_arg ) +void callback_recv_ending ( int32_t call_index, void *_arg ) { Status *cast = _arg; cast->calls[call_index].Caller.status = Ended; } -void callback_recv_error ( uint32_t call_index, void *_arg ) +void callback_recv_error ( int32_t call_index, void *_arg ) { ck_assert_msg(0, "AV internal error"); } -void callback_call_started ( uint32_t call_index, void *_arg ) +void callback_call_started ( int32_t call_index, void *_arg ) {/* Status *cast = _arg; cast->calls[call_index].Callee.status = InCall;*/ } -void callback_call_canceled ( uint32_t call_index, void *_arg ) +void callback_call_canceled ( int32_t call_index, void *_arg ) {/* Status *cast = _arg; cast->calls[call_index].Callee.status = Cancel;*/ } -void callback_call_rejected ( uint32_t call_index, void *_arg ) +void callback_call_rejected ( int32_t call_index, void *_arg ) { Status *cast = _arg; cast->calls[call_index].Caller.status = Rejected; } -void callback_call_ended ( uint32_t call_index, void *_arg ) +void callback_call_ended ( int32_t call_index, void *_arg ) {/* Status *cast = _arg; cast->calls[call_index].Callee.status = Ended;*/ } -void callback_requ_timeout ( uint32_t call_index, void *_arg ) +void callback_requ_timeout ( int32_t call_index, void *_arg ) { ck_assert_msg(0, "No answer!"); } diff --git a/toxav/media.c b/toxav/media.c index 5700c2f26..a6590e003 100644 --- a/toxav/media.c +++ b/toxav/media.c @@ -71,10 +71,7 @@ JitterBuffer *create_queue(int capacity) void terminate_queue(JitterBuffer* q) { - int i; - for ( i = 0; i < q->capacity; i ++ ) { - rtp_free_msg(NULL, q->queue[i]); - } + empty_queue(q); free(q->queue); free(q); } diff --git a/toxav/msi.c b/toxav/msi.c index 8d4e6964a..c2d50302e 100755 --- a/toxav/msi.c +++ b/toxav/msi.c @@ -122,7 +122,7 @@ static struct _Callbacks { void* data; } callbacks[11] = {0}; -inline__ void invoke_callback(uint32_t call_index, MSICallbackID id) +inline__ void invoke_callback(int32_t call_index, MSICallbackID id) { /*if ( callbacks[id].function ) event.rise ( callbacks[id].function, callbacks[id].data );*/ if ( callbacks[id].function ) { @@ -209,18 +209,7 @@ static inline__ const uint8_t *stringify_response ( MSIResponse response ) } -#define ON_HEADER(iterator, header, descriptor, size_const) \ -( memcmp(iterator, descriptor, size_const) == 0){ /* Okay */ \ - iterator += size_const; /* Set iterator at begining of value part */ \ - if ( *iterator != value_byte ) { assert(0); return -1; }\ - iterator ++;\ - uint16_t _value_size = (uint16_t) *(iterator ) << 8 | \ - (uint16_t) *(iterator + 1); \ - header.header_value = calloc(sizeof(uint8_t), _value_size); \ - header.size = _value_size; \ - memcpy(header.header_value, iterator + 2, _value_size);\ - iterator = iterator + 2 + _value_size; /* set iterator at new header or end_byte */ \ -} + /** * @brief Parse raw 'data' received from socket into MSIMessage struct. @@ -235,6 +224,19 @@ static inline__ const uint8_t *stringify_response ( MSIResponse response ) */ int parse_raw_data ( MSIMessage *msg, const uint8_t *data, uint16_t length ) { + +#define ON_HEADER(iterator, header, descriptor, size_const) \ +( memcmp(iterator, descriptor, size_const) == 0){ /* Okay */ \ +iterator += size_const; /* Set iterator at begining of value part */ \ +if ( *iterator != value_byte ) { assert(0); return -1; }\ + iterator ++;\ + uint16_t _value_size = (uint16_t) *(iterator ) << 8 | \ + (uint16_t) *(iterator + 1); \ + header.header_value = calloc(sizeof(uint8_t), _value_size); \ + header.size = _value_size; \ + memcpy(header.header_value, iterator + 2, _value_size);\ + iterator = iterator + 2 + _value_size; /* set iterator at new header or end_byte */ } + if ( msg == NULL ) { LOGGER_ERROR("Could not parse message: no storage!"); } @@ -537,10 +539,6 @@ uint8_t *append_header_to_string ( } -#define CLEAN_ASSIGN(added, var, field, header)\ -if ( header.header_value ) { var = append_header_to_string(var, (const uint8_t*)field, header.header_value, header.size, &added); } - - /** * @brief Convert MSIMessage struct to _sendable_ string. * @@ -550,6 +548,9 @@ if ( header.header_value ) { var = append_header_to_string(var, (const uint8_t*) */ uint16_t message_to_send ( MSIMessage *msg, uint8_t *dest ) { + #define CLEAN_ASSIGN(added, var, field, header)\ + if ( header.header_value ) { var = append_header_to_string(var, (const uint8_t*)field, header.header_value, header.size, &added); } + if (msg == NULL) { LOGGER_ERROR("Empty message!"); return 0; @@ -856,35 +857,6 @@ int has_call_error ( MSISession *session, MSICall* call, MSIMessage *msg ) } -/** - * @brief Function called at request timeout. If not called in thread it might cause trouble - * - * @param arg Control session - * @return void* - */ -void *handle_timeout ( void *arg ) -{ - /* TODO: Cancel might not arrive there; set up - * timers on these cancels and terminate call on - * their timeout - */ - MSICall *_call = arg; - - LOGGER_DEBUG("[Call: %s] Request timed out!", _call->id); - - invoke_callback(_call->call_idx, MSI_OnRequestTimeout); - - if ( _call && _call->session ) { - - /* TODO: Cancel all? */ - /* uint16_t _it = 0; - for ( ; _it < _session->call->peer_count; _it++ ) */ - msi_cancel ( _call->session, _call->call_idx, _call->peers [0], "Request timed out" ); - } - - pthread_exit(NULL); -} - /** * @brief Add peer to peer list. * @@ -903,6 +875,8 @@ void add_peer( MSICall *call, int peer_id ) } call->peers[call->peer_count - 1] = peer_id; + + LOGGER_DEBUG("Added peer: %d", peer_id); } @@ -922,7 +896,7 @@ MSICall *init_call ( MSISession *session, int peers, int ringing_timeout ) return NULL; } - uint32_t _call_idx = 0; + int32_t _call_idx = 0; for (; _call_idx < session->max_calls; _call_idx ++) { if ( !session->calls[_call_idx] ) { session->calls[_call_idx] = calloc ( sizeof ( MSICall ), 1 ); @@ -1015,6 +989,37 @@ int terminate_call ( MSISession *session, MSICall *call ) } +/** + * @brief Function called at request timeout. If not called in thread it might cause trouble + * + * @param arg Control session + * @return void* + */ +void *handle_timeout ( void *arg ) +{ + /* TODO: Cancel might not arrive there; set up + * timers on these cancels and terminate call on + * their timeout + */ + MSICall *_call = arg; + + LOGGER_DEBUG("[Call: %s] Request timed out!", _call->id); + + invoke_callback(_call->call_idx, MSI_OnRequestTimeout); + + if ( _call && _call->session ) { + + /* TODO: Cancel all? */ + /* uint16_t _it = 0; + * for ( ; _it < _session->call->peer_count; _it++ ) */ + msi_cancel ( _call->session, _call->call_idx, _call->peers [0], "Request timed out" ); + terminate_call(_call->session, _call); + } + + pthread_exit(NULL); +} + + /********** Request handlers **********/ int handle_recv_invite ( MSISession *session, MSICall* call, MSIMessage *msg ) { @@ -1072,7 +1077,7 @@ int handle_recv_invite ( MSISession *session, MSICall* call, MSIMessage *msg ) } int handle_recv_start ( MSISession *session, MSICall* call, MSIMessage *msg ) { - LOGGER_DEBUG("Session: %p Handling 'start' on call: %s", session, call->id ); + LOGGER_DEBUG("Session: %p Handling 'start' on call: %s, friend id: %d", session, call->id, msg->friend_id ); if ( has_call_error ( session, call, msg ) == 0 ) return -1; @@ -1125,10 +1130,10 @@ int handle_recv_cancel ( MSISession *session, MSICall* call, MSIMessage *msg ) return 0; /* Act as end message */ - + /* MSIMessage *_msg_ending = msi_new_message ( TYPE_RESPONSE, stringify_response ( ending ) ); send_message ( session, call, _msg_ending, msg->friend_id ); - free_message ( _msg_ending ); + free_message ( _msg_ending );*/ invoke_callback(call->call_idx, MSI_OnCancel); @@ -1383,31 +1388,6 @@ void msi_handle_packet ( Messenger *messenger, int source, uint8_t *data, uint16 } -/******************************************************************************************************************** - * ******************************************************************************************************************* - ******************************************************************************************************************** - ******************************************************************************************************************** - ******************************************************************************************************************** - * - * - * - * PUBLIC API FUNCTIONS IMPLEMENTATIONS - * - * - * - ******************************************************************************************************************** - ******************************************************************************************************************** - ******************************************************************************************************************** - ******************************************************************************************************************** - ********************************************************************************************************************/ - - - - - - - - /** * @brief Callback setter. * @@ -1430,7 +1410,7 @@ void msi_register_callback ( MSICallback callback, MSICallbackID id, void* userd * @return MSISession* The created session. * @retval NULL Error occured. */ -MSISession *msi_init_session ( Messenger* messenger, uint32_t max_calls ) +MSISession *msi_init_session ( Messenger* messenger, int32_t max_calls ) { if (messenger == NULL) { LOGGER_ERROR("Could not init session on empty messenger!"); @@ -1507,13 +1487,13 @@ int msi_terminate_session ( MSISession *session ) * @param friend_id The friend. * @return int */ -int msi_invite ( MSISession* session, uint32_t* call_index, MSICallType call_type, uint32_t rngsec, uint32_t friend_id ) +int msi_invite ( MSISession* session, int32_t* call_index, MSICallType call_type, uint32_t rngsec, uint32_t friend_id ) { LOGGER_DEBUG("Session: %p Inviting friend: %u", session, friend_id); MSIMessage *_msg_invite = msi_new_message ( TYPE_REQUEST, stringify_request ( invite ) ); - MSICall* _call = init_call ( session, 1, rngsec ); /* Just one for now */ + MSICall* _call = init_call ( session, 1, rngsec ); /* Just one peer for now */ if ( !_call ) return -1; /* Cannot handle more calls */ *call_index = _call->call_idx; @@ -1553,11 +1533,11 @@ int msi_invite ( MSISession* session, uint32_t* call_index, MSICallType call_typ * @retval -1 Error occured. * @retval 0 Success. */ -int msi_hangup ( MSISession* session, uint32_t call_index ) +int msi_hangup ( MSISession* session, int32_t call_index ) { LOGGER_DEBUG("Session: %p Hanging up call: %u", session, call_index); - if ( call_index >= session->max_calls || !session->calls[call_index] ) { + if ( call_index < 0 || call_index >= session->max_calls || !session->calls[call_index] ) { LOGGER_ERROR("Invalid call index!"); return -1; } @@ -1592,11 +1572,11 @@ int msi_hangup ( MSISession* session, uint32_t call_index ) * @param call_type Answer with Audio or Video(both). * @return int */ -int msi_answer ( MSISession* session, uint32_t call_index, MSICallType call_type ) +int msi_answer ( MSISession* session, int32_t call_index, MSICallType call_type ) { LOGGER_DEBUG("Session: %p Answering call: %u", session, call_index); - if ( call_index >= session->max_calls || !session->calls[call_index] ){ + if ( call_index < 0 || call_index >= session->max_calls || !session->calls[call_index] ){ LOGGER_ERROR("Invalid call index!"); return -1; } @@ -1641,11 +1621,11 @@ int msi_answer ( MSISession* session, uint32_t call_index, MSICallType call_type * @param reason Set optional reason header. Pass NULL if none. * @return int */ -int msi_cancel ( MSISession *session, uint32_t call_index, uint32_t peer, const char *reason ) +int msi_cancel ( MSISession* session, int32_t call_index, uint32_t peer, const char* reason ) { LOGGER_DEBUG("Session: %p Canceling call: %u; reason:", session, call_index, reason? reason : "Unknown"); - if ( call_index >= session->max_calls || !session->calls[call_index] ){ + if ( call_index < 0 || call_index >= session->max_calls || !session->calls[call_index] ){ LOGGER_ERROR("Invalid call index!"); return -1; } @@ -1670,11 +1650,11 @@ int msi_cancel ( MSISession *session, uint32_t call_index, uint32_t peer, const * @param call_id To which call is this action handled. * @return int */ -int msi_reject ( MSISession *session, uint32_t call_index, const uint8_t *reason ) +int msi_reject ( MSISession* session, int32_t call_index, const uint8_t* reason ) { LOGGER_DEBUG("Session: %p Rejecting call: %u; reason:", session, call_index, reason? (char*)reason : "Unknown"); - if ( call_index >= session->max_calls || !session->calls[call_index] ){ + if ( call_index < 0 || call_index >= session->max_calls || !session->calls[call_index] ){ LOGGER_ERROR("Invalid call index!"); return -1; } @@ -1699,11 +1679,11 @@ int msi_reject ( MSISession *session, uint32_t call_index, const uint8_t *reason * @param call_id To which call is this action handled. * @return int */ -int msi_stopcall ( MSISession *session, uint32_t call_index ) +int msi_stopcall ( MSISession* session, int32_t call_index ) { LOGGER_DEBUG("Session: %p Stopping call index: %u", session, call_index); - if ( call_index >= session->max_calls || !session->calls[call_index] ) + if ( call_index < 0 || call_index >= session->max_calls || !session->calls[call_index] ) return -1; /* just terminate it */ diff --git a/toxav/msi.h b/toxav/msi.h index c74f9f110..2a7c5ba83 100755 --- a/toxav/msi.h +++ b/toxav/msi.h @@ -33,7 +33,7 @@ #define CALL_ID_LEN 12 -typedef void ( *MSICallback ) ( uint32_t, void *arg ); +typedef void ( *MSICallback ) ( int32_t, void *arg ); /** @@ -89,7 +89,7 @@ typedef struct _MSICall { /* Call info structure */ uint32_t *peers; uint16_t peer_count; - uint32_t call_idx; /* Index of this call in MSISession */ + int32_t call_idx; /* Index of this call in MSISession */ } MSICall; @@ -101,7 +101,7 @@ typedef struct _MSISession { /* Call handlers */ struct _MSICall **calls; - uint32_t max_calls; + int32_t max_calls; int last_error_id; /* Determine the last error */ const uint8_t *last_error_str; @@ -158,7 +158,7 @@ void msi_register_callback(MSICallback callback, MSICallbackID id, void* userdat * @return MSISession* The created session. * @retval NULL Error occured. */ -MSISession *msi_init_session ( Messenger *messenger, uint32_t max_calls ); +MSISession *msi_init_session ( Messenger *messenger, int32_t max_calls ); /** @@ -180,7 +180,7 @@ int msi_terminate_session ( MSISession *session ); * @param friend_id The friend. * @return int */ -int msi_invite ( MSISession *session, uint32_t* call_index, MSICallType call_type, uint32_t rngsec, uint32_t friend_id ); +int msi_invite ( MSISession *session, int32_t* call_index, MSICallType call_type, uint32_t rngsec, uint32_t friend_id ); /** @@ -192,7 +192,7 @@ int msi_invite ( MSISession *session, uint32_t* call_index, MSICallType call_typ * @retval -1 Error occured. * @retval 0 Success. */ -int msi_hangup ( MSISession *session, uint32_t call_index ); +int msi_hangup ( MSISession *session, int32_t call_index ); /** @@ -203,7 +203,7 @@ int msi_hangup ( MSISession *session, uint32_t call_index ); * @param call_type Answer with Audio or Video(both). * @return int */ -int msi_answer ( MSISession *session, uint32_t call_index, MSICallType call_type ); +int msi_answer ( MSISession *session, int32_t call_index, MSICallType call_type ); /** @@ -215,7 +215,7 @@ int msi_answer ( MSISession *session, uint32_t call_index, MSICallType call_type * @param reason Set optional reason header. Pass NULL if none. * @return int */ -int msi_cancel ( MSISession* session, uint32_t call_index, uint32_t peer, const char* reason ); +int msi_cancel ( MSISession* session, int32_t call_index, uint32_t peer, const char* reason ); /** @@ -226,7 +226,7 @@ int msi_cancel ( MSISession* session, uint32_t call_index, uint32_t peer, const * @param reason Set optional reason header. Pass NULL if none. * @return int */ -int msi_reject ( MSISession *session, uint32_t call_index, const uint8_t *reason ); +int msi_reject ( MSISession *session, int32_t call_index, const uint8_t *reason ); /** @@ -236,6 +236,6 @@ int msi_reject ( MSISession *session, uint32_t call_index, const uint8_t *reason * @param call_index To which call is this action handled. * @return int */ -int msi_stopcall ( MSISession *session, uint32_t call_index ); +int msi_stopcall ( MSISession *session, int32_t call_index ); #endif /* __TOXMSI */ diff --git a/toxav/rtp.c b/toxav/rtp.c index 1e6296b07..8b2768f11 100755 --- a/toxav/rtp.c +++ b/toxav/rtp.c @@ -652,36 +652,6 @@ RTPMessage *rtp_new_message ( RTPSession *session, const uint8_t *data, uint32_t - - - - -/******************************************************************************************************************** - ******************************************************************************************************************** - ******************************************************************************************************************** - ******************************************************************************************************************** - ******************************************************************************************************************** - * - * - * - * PUBLIC API FUNCTIONS IMPLEMENTATIONS - * - * - * - ******************************************************************************************************************** - ******************************************************************************************************************** - ******************************************************************************************************************** - ******************************************************************************************************************** - ********************************************************************************************************************/ - - - - - - - - - /** * @brief Release all messages held by session. * @@ -757,6 +727,7 @@ RTPMessage *rtp_recv_msg ( RTPSession *session ) pthread_mutex_lock(&session->mutex); if ( session->queue_size == 0 ) { + pthread_mutex_unlock(&session->mutex); return NULL; } @@ -890,12 +861,13 @@ RTPSession *rtp_init_session ( int payload_type, assert(_retu); if ( -1 == custom_user_packet_registerhandler(messenger, friend_num, payload_type, rtp_handle_packet, _retu) || - !encrypt_key, !decrypt_key, !encrypt_nonce, !decrypt_nonce - ) { + !encrypt_key || !decrypt_key || !encrypt_nonce || !decrypt_nonce) { LOGGER_ERROR("Error setting custom register handler for rtp session"); free(_retu); return NULL; } + + LOGGER_DEBUG("Registered packet handler: pt: %d; fid: %d", payload_type, friend_num); _retu->version = RTP_VERSION; /* It's always 2 */ _retu->padding = 0; /* If some additional data is needed about the packet */ diff --git a/toxav/toxav.c b/toxav/toxav.c index 3a41754a5..015c65652 100755 --- a/toxav/toxav.c +++ b/toxav/toxav.c @@ -92,7 +92,7 @@ const ToxAvCodecSettings av_DefaultSettings = { * @return ToxAv* * @retval NULL On error. */ -ToxAv *toxav_new( Tox* messenger, uint32_t max_calls) +ToxAv *toxav_new( Tox* messenger, int32_t max_calls) { ToxAv *av = calloc ( sizeof(ToxAv), 1); @@ -171,7 +171,7 @@ void toxav_register_callstate_callback ( ToxAVCallback callback, ToxAvCallbackID * @retval 0 Success. * @retval ToxAvError On error. */ -int toxav_call (ToxAv* av, uint32_t* call_index, int user, ToxAvCallType call_type, int ringing_seconds ) +int toxav_call (ToxAv* av, int32_t* call_index, int user, ToxAvCallType call_type, int ringing_seconds ) { return msi_invite(av->msi_session, call_index, call_type, ringing_seconds * 1000, user); } @@ -184,7 +184,7 @@ int toxav_call (ToxAv* av, uint32_t* call_index, int user, ToxAvCallType call_ty * @retval 0 Success. * @retval ToxAvError On error. */ -int toxav_hangup ( ToxAv* av, uint32_t call_index ) +int toxav_hangup ( ToxAv* av, int32_t call_index ) { if ( !av->msi_session->calls[call_index] ) { return ErrorNoCall; @@ -206,7 +206,7 @@ int toxav_hangup ( ToxAv* av, uint32_t call_index ) * @retval 0 Success. * @retval ToxAvError On error. */ -int toxav_answer ( ToxAv* av, uint32_t call_index, ToxAvCallType call_type ) +int toxav_answer ( ToxAv* av, int32_t call_index, ToxAvCallType call_type ) { if ( !av->msi_session->calls[call_index] ) { return ErrorNoCall; @@ -228,7 +228,7 @@ int toxav_answer ( ToxAv* av, uint32_t call_index, ToxAvCallType call_type ) * @retval 0 Success. * @retval ToxAvError On error. */ -int toxav_reject ( ToxAv* av, uint32_t call_index, const char* reason ) +int toxav_reject ( ToxAv* av, int32_t call_index, const char* reason ) { if ( !av->msi_session->calls[call_index] ) { return ErrorNoCall; @@ -251,7 +251,7 @@ int toxav_reject ( ToxAv* av, uint32_t call_index, const char* reason ) * @retval 0 Success. * @retval ToxAvError On error. */ -int toxav_cancel ( ToxAv* av, uint32_t call_index, int peer_id, const char* reason ) +int toxav_cancel ( ToxAv* av, int32_t call_index, int peer_id, const char* reason ) { if ( !av->msi_session->calls[call_index] ) { return ErrorNoCall; @@ -268,7 +268,7 @@ int toxav_cancel ( ToxAv* av, uint32_t call_index, int peer_id, const char* reas * @retval 0 Success. * @retval ToxAvError On error. */ -int toxav_stop_call ( ToxAv* av, uint32_t call_index ) +int toxav_stop_call ( ToxAv* av, int32_t call_index ) { if ( !av->msi_session->calls[call_index] ) { return ErrorNoCall; @@ -285,7 +285,7 @@ int toxav_stop_call ( ToxAv* av, uint32_t call_index ) * @retval 0 Success. * @retval ToxAvError On error. */ -int toxav_prepare_transmission ( ToxAv* av, uint32_t call_index, ToxAvCodecSettings* codec_settings, int support_video ) +int toxav_prepare_transmission ( ToxAv* av, int32_t call_index, ToxAvCodecSettings* codec_settings, int support_video ) { if ( !av->msi_session || av->msi_session->max_calls <= call_index || !av->msi_session->calls[call_index] ) { /*fprintf(stderr, "Error while starting audio RTP session: invalid call!\n");*/ @@ -350,7 +350,7 @@ int toxav_prepare_transmission ( ToxAv* av, uint32_t call_index, ToxAvCodecSetti * @retval 0 Success. * @retval ToxAvError On error. */ -int toxav_kill_transmission ( ToxAv *av, uint32_t call_index ) +int toxav_kill_transmission ( ToxAv *av, int32_t call_index ) { CallSpecific* call = &av->calls[call_index]; @@ -370,12 +370,16 @@ int toxav_kill_transmission ( ToxAv *av, uint32_t call_index ) if ( call->j_buf ) { terminate_queue(call->j_buf); call->j_buf = NULL; + LOGGER_DEBUG("Terminated j queue"); } + else LOGGER_DEBUG("No j queue"); if ( call->cs ) { codec_terminate_session(call->cs); call->cs = NULL; + LOGGER_DEBUG("Terminated codec session"); } + else LOGGER_DEBUG("No codec session"); return ErrorNone; } @@ -392,7 +396,7 @@ int toxav_kill_transmission ( ToxAv *av, uint32_t call_index ) * @retval 0 Success. * @retval -1 Failure. */ -inline__ int toxav_send_rtp_payload ( ToxAv *av, uint32_t call_index, ToxAvCallType type, const uint8_t *payload, uint16_t length ) +inline__ int toxav_send_rtp_payload ( ToxAv *av, int32_t call_index, ToxAvCallType type, const uint8_t *payload, uint16_t length ) { if ( av->calls[call_index].crtps[type - TypeAudio] ) return rtp_send_msg ( av->calls[call_index].crtps[type - TypeAudio], av->msi_session->messenger_handle, payload, length ); @@ -409,7 +413,7 @@ inline__ int toxav_send_rtp_payload ( ToxAv *av, uint32_t call_index, ToxAvCallT * @retval ToxAvError On Error. * @retval >=0 Size of received payload. */ -inline__ int toxav_recv_rtp_payload ( ToxAv *av, uint32_t call_index, ToxAvCallType type, uint8_t *dest ) +inline__ int toxav_recv_rtp_payload ( ToxAv *av, int32_t call_index, ToxAvCallType type, uint8_t *dest ) { if ( !dest ) return ErrorInternal; @@ -460,7 +464,7 @@ inline__ int toxav_recv_rtp_payload ( ToxAv *av, uint32_t call_index, ToxAvCallT * @retval 0 Success. * @retval ToxAvError On Error. */ -inline__ int toxav_recv_video ( ToxAv *av, uint32_t call_index, vpx_image_t **output) +inline__ int toxav_recv_video ( ToxAv *av, int32_t call_index, vpx_image_t **output) { if ( !output ) return ErrorInternal; @@ -496,7 +500,7 @@ inline__ int toxav_recv_video ( ToxAv *av, uint32_t call_index, vpx_image_t **ou * @retval 0 Success. * @retval ToxAvError On error. */ -inline__ int toxav_send_video ( ToxAv *av, uint32_t call_index, const uint8_t* frame, int frame_size) +inline__ int toxav_send_video ( ToxAv *av, int32_t call_index, const uint8_t* frame, int frame_size) { return toxav_send_rtp_payload(av, call_index, TypeVideo, frame, frame_size); } @@ -512,7 +516,7 @@ inline__ int toxav_send_video ( ToxAv *av, uint32_t call_index, const uint8_t* f * @retval ToxAvError On error. * @retval >0 On success */ -inline__ int toxav_prepare_video_frame(ToxAv* av, uint32_t call_index, uint8_t* dest, int dest_max, vpx_image_t* input) +inline__ int toxav_prepare_video_frame(ToxAv* av, int32_t call_index, uint8_t* dest, int dest_max, vpx_image_t* input) { CallSpecific* call = &av->calls[call_index]; @@ -551,7 +555,7 @@ inline__ int toxav_prepare_video_frame(ToxAv* av, uint32_t call_index, uint8_t* * @retval >=0 Size of received data in frames/samples. * @retval ToxAvError On error. */ -inline__ int toxav_recv_audio ( ToxAv *av, uint32_t call_index, int frame_size, int16_t *dest ) +inline__ int toxav_recv_audio ( ToxAv *av, int32_t call_index, int frame_size, int16_t *dest ) { if ( !dest ) return ErrorInternal; @@ -592,7 +596,7 @@ inline__ int toxav_recv_audio ( ToxAv *av, uint32_t call_index, int frame_size, * @retval 0 Success. * @retval ToxAvError On error. */ -inline__ int toxav_send_audio ( ToxAv *av, uint32_t call_index, const uint8_t *frame, int frame_size) +inline__ int toxav_send_audio ( ToxAv *av, int32_t call_index, const uint8_t *frame, int frame_size) { return toxav_send_rtp_payload(av, call_index, TypeAudio, frame, frame_size); } @@ -609,7 +613,7 @@ inline__ int toxav_send_audio ( ToxAv *av, uint32_t call_index, const uint8_t *f * @retval ToxAvError On error. * @retval >0 On success */ -inline__ int toxav_prepare_audio_frame ( ToxAv* av, uint32_t call_index, uint8_t* dest, int dest_max, const int16_t* frame, int frame_size) +inline__ int toxav_prepare_audio_frame ( ToxAv* av, int32_t call_index, uint8_t* dest, int dest_max, const int16_t* frame, int frame_size) { int32_t rc = opus_encode(av->calls[call_index].cs->audio_encoder, frame, frame_size, dest, dest_max); @@ -629,7 +633,7 @@ inline__ int toxav_prepare_audio_frame ( ToxAv* av, uint32_t call_index, uint8_t * @retval ToxAvCallType On success. * @retval ToxAvError On error. */ -int toxav_get_peer_transmission_type ( ToxAv *av, uint32_t call_index, int peer ) +int toxav_get_peer_transmission_type ( ToxAv *av, int32_t call_index, int peer ) { assert(av->msi_session); @@ -647,7 +651,7 @@ int toxav_get_peer_transmission_type ( ToxAv *av, uint32_t call_index, int peer * @return int * @retval ToxAvError No peer id */ -int toxav_get_peer_id ( ToxAv* av, uint32_t call_index, int peer ) +int toxav_get_peer_id ( ToxAv* av, int32_t call_index, int peer ) { assert(av->msi_session); @@ -665,9 +669,10 @@ int toxav_get_peer_id ( ToxAv* av, uint32_t call_index, int peer ) * @retval 1 Yes. * @retval 0 No. */ -inline__ int toxav_capability_supported ( ToxAv* av, uint32_t call_index, ToxAvCapabilities capability ) +inline__ int toxav_capability_supported ( ToxAv* av, int32_t call_index, ToxAvCapabilities capability ) { - return av->calls[call_index].cs->capabilities & (Capabilities) capability; + return av->calls[call_index].cs ? av->calls[call_index].cs->capabilities & (Capabilities) capability : 0; + /* 0 is error here */ } /** @@ -678,9 +683,14 @@ inline__ int toxav_capability_supported ( ToxAv* av, uint32_t call_index, ToxAvC * @param limit the limit * @return void */ -void toxav_set_audio_queue_limit(ToxAv* av, uint32_t call_index, uint64_t limit) +inline__ int toxav_set_audio_queue_limit(ToxAv* av, int32_t call_index, uint64_t limit) { - rtp_queue_adjust_limit(av->calls[call_index].crtps[audio_index], limit); + if ( av->calls[call_index].crtps[audio_index] ) + rtp_queue_adjust_limit(av->calls[call_index].crtps[audio_index], limit); + else + return ErrorNoRtpSession; + + return ErrorNone; } /** @@ -691,7 +701,17 @@ void toxav_set_audio_queue_limit(ToxAv* av, uint32_t call_index, uint64_t limit) * @param limit the limit * @return void */ -void toxav_set_video_queue_limit(ToxAv* av, uint32_t call_index, uint64_t limit) -{ - rtp_queue_adjust_limit(av->calls[call_index].crtps[video_index], limit); +inline__ int toxav_set_video_queue_limit(ToxAv* av, int32_t call_index, uint64_t limit) +{ + if ( av->calls[call_index].crtps[video_index] ) + rtp_queue_adjust_limit(av->calls[call_index].crtps[video_index], limit); + else + return ErrorNoRtpSession; + + return ErrorNone; } + +inline__ Tox* toxav_get_tox(ToxAv* av) +{ + return (Tox*)av->messenger; +} \ No newline at end of file diff --git a/toxav/toxav.h b/toxav/toxav.h index 6dac966ba..74f2333bf 100755 --- a/toxav/toxav.h +++ b/toxav/toxav.h @@ -29,7 +29,7 @@ /* vpx_image_t */ #include -typedef void ( *ToxAVCallback ) ( uint32_t, void *arg ); +typedef void ( *ToxAVCallback ) ( int32_t, void *arg ); typedef struct _ToxAv ToxAv; #ifndef __TOX_DEFINED__ @@ -133,7 +133,7 @@ extern const ToxAvCodecSettings av_DefaultSettings; * @return ToxAv* * @retval NULL On error. */ -ToxAv *toxav_new(Tox *messenger, uint32_t max_calls); +ToxAv *toxav_new(Tox *messenger, int32_t max_calls); /** * @brief Remove A/V session. @@ -163,7 +163,7 @@ void toxav_register_callstate_callback (ToxAVCallback callback, ToxAvCallbackID * @retval 0 Success. * @retval ToxAvError On error. */ -int toxav_call(ToxAv *av, uint32_t* call_index, int user, ToxAvCallType call_type, int ringing_seconds); +int toxav_call(ToxAv *av, int32_t* call_index, int user, ToxAvCallType call_type, int ringing_seconds); /** * @brief Hangup active call. @@ -173,7 +173,7 @@ int toxav_call(ToxAv *av, uint32_t* call_index, int user, ToxAvCallType call_typ * @retval 0 Success. * @retval ToxAvError On error. */ -int toxav_hangup(ToxAv *av, uint32_t call_index); +int toxav_hangup(ToxAv *av, int32_t call_index); /** * @brief Answer incomming call. @@ -184,7 +184,7 @@ int toxav_hangup(ToxAv *av, uint32_t call_index); * @retval 0 Success. * @retval ToxAvError On error. */ -int toxav_answer(ToxAv *av, uint32_t call_index, ToxAvCallType call_type ); +int toxav_answer(ToxAv *av, int32_t call_index, ToxAvCallType call_type ); /** * @brief Reject incomming call. @@ -195,7 +195,7 @@ int toxav_answer(ToxAv *av, uint32_t call_index, ToxAvCallType call_type ); * @retval 0 Success. * @retval ToxAvError On error. */ -int toxav_reject(ToxAv *av, uint32_t call_index, const char *reason); +int toxav_reject(ToxAv *av, int32_t call_index, const char *reason); /** * @brief Cancel outgoing request. @@ -207,7 +207,7 @@ int toxav_reject(ToxAv *av, uint32_t call_index, const char *reason); * @retval 0 Success. * @retval ToxAvError On error. */ -int toxav_cancel(ToxAv* av, uint32_t call_index, int peer_id, const char* reason); +int toxav_cancel(ToxAv* av, int32_t call_index, int peer_id, const char* reason); /** * @brief Terminate transmission. Note that transmission will be terminated without informing remote peer. @@ -217,7 +217,7 @@ int toxav_cancel(ToxAv* av, uint32_t call_index, int peer_id, const char* reason * @retval 0 Success. * @retval ToxAvError On error. */ -int toxav_stop_call(ToxAv *av, uint32_t call_index); +int toxav_stop_call(ToxAv *av, int32_t call_index); /** * @brief Must be call before any RTP transmission occurs. @@ -228,7 +228,7 @@ int toxav_stop_call(ToxAv *av, uint32_t call_index); * @retval 0 Success. * @retval ToxAvError On error. */ -int toxav_prepare_transmission(ToxAv* av, uint32_t call_index, ToxAvCodecSettings* codec_settings, int support_video); +int toxav_prepare_transmission(ToxAv* av, int32_t call_index, ToxAvCodecSettings* codec_settings, int support_video); /** * @brief Call this at the end of the transmission. @@ -238,7 +238,7 @@ int toxav_prepare_transmission(ToxAv* av, uint32_t call_index, ToxAvCodecSetting * @retval 0 Success. * @retval ToxAvError On error. */ -int toxav_kill_transmission(ToxAv *av, uint32_t call_index); +int toxav_kill_transmission(ToxAv* av, int32_t call_index); /** * @brief Receive decoded video packet. @@ -249,7 +249,7 @@ int toxav_kill_transmission(ToxAv *av, uint32_t call_index); * @retval 0 Success. * @retval ToxAvError On Error. */ -int toxav_recv_video ( ToxAv* av, uint32_t call_index, vpx_image_t** output); +int toxav_recv_video ( ToxAv* av, int32_t call_index, vpx_image_t** output); /** * @brief Receive decoded audio frame. @@ -263,7 +263,7 @@ int toxav_recv_video ( ToxAv* av, uint32_t call_index, vpx_image_t** output); * @retval >=0 Size of received data in frames/samples. * @retval ToxAvError On error. */ -int toxav_recv_audio( ToxAv* av, uint32_t call_index, int frame_size, int16_t* dest ); +int toxav_recv_audio( ToxAv* av, int32_t call_index, int frame_size, int16_t* dest ); /** * @brief Encode and send video packet. @@ -275,7 +275,7 @@ int toxav_recv_audio( ToxAv* av, uint32_t call_index, int frame_size, int16_t* d * @retval 0 Success. * @retval ToxAvError On error. */ -int toxav_send_video ( ToxAv* av, uint32_t call_index, const uint8_t* frame, int frame_size); +int toxav_send_video ( ToxAv* av, int32_t call_index, const uint8_t* frame, int frame_size); /** * @brief Send audio frame. @@ -288,7 +288,7 @@ int toxav_send_video ( ToxAv* av, uint32_t call_index, const uint8_t* frame, int * @retval 0 Success. * @retval ToxAvError On error. */ -int toxav_send_audio ( ToxAv* av, uint32_t call_index, const uint8_t* frame, int frame_size); +int toxav_send_audio ( ToxAv* av, int32_t call_index, const uint8_t* frame, int frame_size); /** * @brief Encode video frame @@ -301,7 +301,7 @@ int toxav_send_audio ( ToxAv* av, uint32_t call_index, const uint8_t* frame, int * @retval ToxAvError On error. * @retval >0 On success */ -int toxav_prepare_video_frame ( ToxAv* av, uint32_t call_index, uint8_t* dest, int dest_max, vpx_image_t* input ); +int toxav_prepare_video_frame ( ToxAv* av, int32_t call_index, uint8_t* dest, int dest_max, vpx_image_t* input ); /** * @brief Encode audio frame @@ -315,7 +315,7 @@ int toxav_prepare_video_frame ( ToxAv* av, uint32_t call_index, uint8_t* dest, i * @retval ToxAvError On error. * @retval >0 On success */ -int toxav_prepare_audio_frame ( ToxAv* av, uint32_t call_index, uint8_t* dest, int dest_max, const int16_t* frame, int frame_size); +int toxav_prepare_audio_frame ( ToxAv* av, int32_t call_index, uint8_t* dest, int dest_max, const int16_t* frame, int frame_size); /** * @brief Get peer transmission type. It can either be audio or video. @@ -326,7 +326,7 @@ int toxav_prepare_audio_frame ( ToxAv* av, uint32_t call_index, uint8_t* dest, i * @retval ToxAvCallType On success. * @retval ToxAvError On error. */ -int toxav_get_peer_transmission_type ( ToxAv *av, uint32_t call_index, int peer ); +int toxav_get_peer_transmission_type ( ToxAv* av, int32_t call_index, int peer ); /** * @brief Get id of peer participating in conversation @@ -336,7 +336,7 @@ int toxav_get_peer_transmission_type ( ToxAv *av, uint32_t call_index, int peer * @return int * @retval ToxAvError No peer id */ -int toxav_get_peer_id ( ToxAv* av, uint32_t call_index, int peer ); +int toxav_get_peer_id ( ToxAv* av, int32_t call_index, int peer ); /** * @brief Is certain capability supported @@ -346,7 +346,7 @@ int toxav_get_peer_id ( ToxAv* av, uint32_t call_index, int peer ); * @retval 1 Yes. * @retval 0 No. */ -int toxav_capability_supported ( ToxAv* av, uint32_t call_index, ToxAvCapabilities capability ); +int toxav_capability_supported ( ToxAv* av, int32_t call_index, ToxAvCapabilities capability ); /** * @brief Set queue limit @@ -356,7 +356,7 @@ int toxav_capability_supported ( ToxAv* av, uint32_t call_index, ToxAvCapabiliti * @param limit the limit * @return void */ -void toxav_set_audio_queue_limit ( ToxAv* av, uint32_t call_index, uint64_t limit ); +int toxav_set_audio_queue_limit ( ToxAv* av, int32_t call_index, uint64_t limit ); /** * @brief Set queue limit @@ -366,6 +366,8 @@ void toxav_set_audio_queue_limit ( ToxAv* av, uint32_t call_index, uint64_t limi * @param limit the limit * @return void */ -void toxav_set_video_queue_limit ( ToxAv* av, uint32_t call_index, uint64_t limit ); +int toxav_set_video_queue_limit ( ToxAv* av, int32_t call_index, uint64_t limit ); + +Tox* toxav_get_tox(ToxAv* av); #endif /* __TOXAV */ \ No newline at end of file diff --git a/toxcore/Messenger.c b/toxcore/Messenger.c index 2033e6a98..f5ed14b10 100644 --- a/toxcore/Messenger.c +++ b/toxcore/Messenger.c @@ -2275,7 +2275,7 @@ void do_messenger(Messenger *m) if (last_pinged > 999) last_pinged = 999; - LOGGER_DEBUG("C[%2u] %s:%u [%3u] %s", + LOGGER_INFO("C[%2u] %s:%u [%3u] %s", client, ip_ntoa(&assoc->ip_port.ip), ntohs(assoc->ip_port.port), last_pinged, ID2String(cptr->client_id)); } @@ -2308,7 +2308,7 @@ void do_messenger(Messenger *m) dht2m[m2dht[friend]] = friend; if (m->numfriends != m->dht->num_friends) { - LOGGER_DEBUG("Friend num in DHT %u != friend num in msger %u\n", m->dht->num_friends, m->numfriends); + LOGGER_INFO("Friend num in DHT %u != friend num in msger %u\n", m->dht->num_friends, m->numfriends); } uint32_t ping_lastrecv; @@ -2329,11 +2329,11 @@ void do_messenger(Messenger *m) if (ping_lastrecv > 999) ping_lastrecv = 999; - LOGGER_DEBUG("F[%2u:%2u] <%s> %02i [%03u] %s", + LOGGER_INFO("F[%2u:%2u] <%s> %02i [%03u] %s", dht2m[friend], friend, msgfptr->name, msgfptr->crypt_connection_id, ping_lastrecv, ID2String(msgfptr->client_id)); } else { - LOGGER_DEBUG("F[--:%2u] %s", friend, ID2String(dhtfptr->client_id)); + LOGGER_INFO("F[--:%2u] %s", friend, ID2String(dhtfptr->client_id)); } for (client = 0; client < MAX_FRIEND_CLIENTS; client++) { @@ -2348,7 +2348,7 @@ void do_messenger(Messenger *m) if (last_pinged > 999) last_pinged = 999; - LOGGER_DEBUG("F[%2u] => C[%2u] %s:%u [%3u] %s", + LOGGER_INFO("F[%2u] => C[%2u] %s:%u [%3u] %s", friend, client, ip_ntoa(&assoc->ip_port.ip), ntohs(assoc->ip_port.port), last_pinged, ID2String(cptr->client_id)); diff --git a/toxcore/logger.c b/toxcore/logger.c index e700fe712..ff9146d4c 100644 --- a/toxcore/logger.c +++ b/toxcore/logger.c @@ -60,8 +60,8 @@ void __attribute__((destructor)) terminate_logger() time_t tim = time(NULL); - logger_write(ERROR, "============== Closing logger ==============\n" - "Time: %s", asctime(localtime(&tim))); + logger_write(ERROR, "\n============== Closing logger [%u] ==============\n" + "Time: %s", logger_get_pid(), asctime(localtime(&tim))); fclose(logger.log_file); } @@ -96,12 +96,12 @@ int logger_init(const char* file_name, LoggerLevel level) sprintf(final_l, "%s"/*.%u"*/, file_name, logger_get_pid()); if ( logger.log_file ) { - fprintf(stderr, "Error opening logger name: %s with level %d: already opened!\n", final_l, level); + fprintf(stderr, "Error opening logger name: %s with level %d: %s!\n", final_l, level, strerror(errno)); free (final_l); return -1; } - logger.log_file = fopen(final_l, "wb"); + logger.log_file = fopen(final_l, "ab"); if ( logger.log_file == NULL ) { char error[1000]; @@ -120,8 +120,8 @@ int logger_init(const char* file_name, LoggerLevel level) time_t tim = time(NULL); - logger_write(ERROR, "============== Starting logger ==============\n" - "Time: %s", asctime(localtime(&tim))); + logger_write(ERROR, "\n============== Starting logger [%u] ==============\n" + "Time: %s", logger_get_pid(), asctime(localtime(&tim))); diff --git a/toxcore/logger.h b/toxcore/logger.h index abef4b847..d8292f314 100644 --- a/toxcore/logger.h +++ b/toxcore/logger.h @@ -53,7 +53,7 @@ char* logger_timestr (char* dest); #define _SFILE (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) #endif -#define WRITE_FORMAT(__LEVEL__, format) char* the_str = calloc(sizeof(char), strlen(format)+ 500); sprintf(the_str, "[%u] [%s] [%s] [%s:%d %s()] %s\n", \ +#define WRITE_FORMAT(__LEVEL__, format) char* the_str = calloc(sizeof(char), strlen(format)+ 500); sprintf(the_str, "\n[%u] [%s] [%s] [%s:%d %s()] %s", \ logger_get_pid(), logger_stringify_level(__LEVEL__), logger_timestr(__time__), _SFILE, __LINE__, __func__, format) /* Use these macros */ diff --git a/toxcore/network.c b/toxcore/network.c index 7262f352b..5980abe3a 100644 --- a/toxcore/network.c +++ b/toxcore/network.c @@ -374,7 +374,7 @@ void networking_poll(Networking_Core *net) if (length < 1) continue; if (!(net->packethandlers[data[0]].function)) { - LOGGER_WARNING("[%02u] -- Packet has no handler.\n", data[0]); + LOGGER_WARNING("[%02u] -- Packet has no handler", data[0]); continue; }