From b86952810c53a4b6249d7f891ac3403df91d760c Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 15 Jan 2016 14:47:10 +0100 Subject: [PATCH 1/9] improve loggin of an error case --- coreapi/misc.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/coreapi/misc.c b/coreapi/misc.c index 297371680..dff4c026f 100644 --- a/coreapi/misc.c +++ b/coreapi/misc.c @@ -1178,6 +1178,16 @@ static int get_local_ip_with_getifaddrs(int type, char *address, int size){ } #endif +static const char *ai_family_to_string(int af){ + switch(af){ + case AF_INET: return "AF_INET"; + case AF_INET6: return "AF_INET6"; + case AF_UNSPEC: return "AF_UNSPEC"; + default: + return "invalid address family"; + } + return ""; +} static int get_local_ip_for_with_connect(int type, const char *dest, char *result){ int err,tmp; @@ -1202,13 +1212,18 @@ static int get_local_ip_for_with_connect(int type, const char *dest, char *resul return -1; } sock=socket(res->ai_family,SOCK_DGRAM,0); + if (sock == (ortp_socket_t)-1){ + ms_error("get_local_ip_for_with_connect() could not create [%s] socket: %s", + ai_family_to_string(res->ai_family), getSocketError()); + return -1; + } tmp=1; err=setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,(SOCKET_OPTION_VALUE)&tmp,sizeof(int)); - if (err<0){ + if (err == -1){ ms_warning("Error in setsockopt: %s",strerror(errno)); } err=connect(sock,res->ai_addr,(int)res->ai_addrlen); - if (err<0) { + if (err == -1) { /*the network isn't reachable*/ if (getSocketErrorCode()!=ENETUNREACH) ms_error("Error in connect: %s",strerror(errno)); freeaddrinfo(res); From 2a6213d90c4bda8a2758a1102257ea55a24afdf9 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 15 Jan 2016 21:58:21 +0100 Subject: [PATCH 2/9] prepare the removal of a=nortpproxy attribute for ICE reINVITE. --- coreapi/bellesip_sal/sal_sdp.c | 4 ++-- coreapi/linphonecall.c | 5 ++++- coreapi/misc.c | 10 +++++----- coreapi/offeranswer.c | 4 ++-- coreapi/private.h | 2 +- include/sal/sal.h | 8 ++++---- 6 files changed, 18 insertions(+), 15 deletions(-) diff --git a/coreapi/bellesip_sal/sal_sdp.c b/coreapi/bellesip_sal/sal_sdp.c index 126aca340..80cfb032b 100644 --- a/coreapi/bellesip_sal/sal_sdp.c +++ b/coreapi/bellesip_sal/sal_sdp.c @@ -320,7 +320,7 @@ static void stream_description_to_sdp ( belle_sdp_session_description_t *session belle_sdp_media_description_add_attribute(media_desc,belle_sdp_attribute_create ("rtcp",buffer)); } } - if (stream->ice_completed == TRUE) { + if (stream->set_nortpproxy == TRUE) { belle_sdp_media_description_add_attribute(media_desc,belle_sdp_attribute_create ("nortpproxy","yes")); } if (stream->ice_mismatch == TRUE) { @@ -423,7 +423,7 @@ belle_sdp_session_description_t * media_description_to_sdp ( const SalMediaDescr belle_sdp_session_description_set_bandwidth ( session_desc,"AS",desc->bandwidth ); } - if (desc->ice_completed == TRUE) belle_sdp_session_description_add_attribute(session_desc, belle_sdp_attribute_create("nortpproxy","yes")); + if (desc->set_nortpproxy == TRUE) belle_sdp_session_description_add_attribute(session_desc, belle_sdp_attribute_create("nortpproxy","yes")); if (desc->ice_pwd[0] != '\0') belle_sdp_session_description_add_attribute(session_desc, belle_sdp_attribute_create("ice-pwd",desc->ice_pwd)); if (desc->ice_ufrag[0] != '\0') belle_sdp_session_description_add_attribute(session_desc, belle_sdp_attribute_create("ice-ufrag",desc->ice_ufrag)); diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index 5718782ed..e051789c3 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -579,8 +579,11 @@ void linphone_call_increment_local_media_description(LinphoneCall *call){ } void linphone_call_update_local_media_description_from_ice_or_upnp(LinphoneCall *call){ + LinphoneCore *lc = call->core; if (call->ice_session != NULL) { - _update_local_media_description_from_ice(call->localdesc, call->ice_session); + /*set this to FALSE once flexisip are updated*/ + bool_t use_nortpproxy = lp_config_get_int(lc->config, "sip", "ice_uses_nortpproxy", TRUE); + _update_local_media_description_from_ice(call->localdesc, call->ice_session, use_nortpproxy); linphone_core_update_ice_state_in_call_stats(call); } #ifdef BUILD_UPNP diff --git a/coreapi/misc.c b/coreapi/misc.c index dff4c026f..df32829dc 100644 --- a/coreapi/misc.c +++ b/coreapi/misc.c @@ -806,7 +806,7 @@ void linphone_call_stop_ice_for_inactive_streams(LinphoneCall *call, SalMediaDes linphone_core_update_ice_state_in_call_stats(call); } -void _update_local_media_description_from_ice(SalMediaDescription *desc, IceSession *session) { +void _update_local_media_description_from_ice(SalMediaDescription *desc, IceSession *session, bool_t use_nortpproxy) { const char *rtp_addr, *rtcp_addr; IceSessionState session_state = ice_session_state(session); int nb_candidates; @@ -814,7 +814,7 @@ void _update_local_media_description_from_ice(SalMediaDescription *desc, IceSess bool_t result; if (session_state == IS_Completed) { - desc->ice_completed = TRUE; + if (use_nortpproxy) desc->set_nortpproxy = TRUE; result = ice_check_list_selected_valid_local_candidate(ice_session_check_list(session, 0), &rtp_addr, NULL, NULL, NULL); if (result == TRUE) { strncpy(desc->addr, rtp_addr, sizeof(desc->addr)); @@ -823,7 +823,7 @@ void _update_local_media_description_from_ice(SalMediaDescription *desc, IceSess } } else { - desc->ice_completed = FALSE; + desc->set_nortpproxy = FALSE; } strncpy(desc->ice_pwd, ice_session_local_pwd(session), sizeof(desc->ice_pwd)); strncpy(desc->ice_ufrag, ice_session_local_ufrag(session), sizeof(desc->ice_ufrag)); @@ -833,10 +833,10 @@ void _update_local_media_description_from_ice(SalMediaDescription *desc, IceSess nb_candidates = 0; if (!sal_stream_description_active(stream) || (cl == NULL)) continue; if (ice_check_list_state(cl) == ICL_Completed) { - stream->ice_completed = TRUE; + if (use_nortpproxy) stream->set_nortpproxy = TRUE; result = ice_check_list_selected_valid_local_candidate(ice_session_check_list(session, i), &rtp_addr, &stream->rtp_port, &rtcp_addr, &stream->rtcp_port); } else { - stream->ice_completed = FALSE; + stream->set_nortpproxy = FALSE; result = ice_check_list_default_local_candidate(ice_session_check_list(session, i), &rtp_addr, &stream->rtp_port, &rtcp_addr, &stream->rtcp_port); } if (result == TRUE) { diff --git a/coreapi/offeranswer.c b/coreapi/offeranswer.c index 7616b3499..bc115001a 100644 --- a/coreapi/offeranswer.c +++ b/coreapi/offeranswer.c @@ -485,7 +485,7 @@ static void initiate_incoming(const SalStreamDescription *local_cap, strcpy(result->ice_pwd, local_cap->ice_pwd); strcpy(result->ice_ufrag, local_cap->ice_ufrag); result->ice_mismatch = local_cap->ice_mismatch; - result->ice_completed = local_cap->ice_completed; + result->set_nortpproxy = local_cap->set_nortpproxy; memcpy(result->ice_candidates, local_cap->ice_candidates, sizeof(result->ice_candidates)); memcpy(result->ice_remote_candidates, local_cap->ice_remote_candidates, sizeof(result->ice_remote_candidates)); strcpy(result->name,local_cap->name); @@ -603,7 +603,7 @@ int offer_answer_initiate_incoming(const SalMediaDescription *local_capabilities strcpy(result->ice_pwd, local_capabilities->ice_pwd); strcpy(result->ice_ufrag, local_capabilities->ice_ufrag); result->ice_lite = local_capabilities->ice_lite; - result->ice_completed = local_capabilities->ice_completed; + result->set_nortpproxy = local_capabilities->set_nortpproxy; result->custom_sdp_attributes = sal_custom_sdp_attribute_clone(local_capabilities->custom_sdp_attributes); strcpy(result->name,local_capabilities->name); diff --git a/coreapi/private.h b/coreapi/private.h index 3ed87ca78..d6b683041 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -485,7 +485,7 @@ int linphone_core_gather_ice_candidates(LinphoneCore *lc, LinphoneCall *call); void linphone_core_update_ice_state_in_call_stats(LinphoneCall *call); void linphone_call_stats_fill(LinphoneCallStats *stats, MediaStream *ms, OrtpEvent *ev); void linphone_call_stop_ice_for_inactive_streams(LinphoneCall *call, SalMediaDescription *result); -void _update_local_media_description_from_ice(SalMediaDescription *desc, IceSession *session); +void _update_local_media_description_from_ice(SalMediaDescription *desc, IceSession *session, bool_t use_nortpproxy); void linphone_call_update_local_media_description_from_ice_or_upnp(LinphoneCall *call); void linphone_call_update_ice_from_remote_media_description(LinphoneCall *call, const SalMediaDescription *md); void linphone_call_clear_unused_ice_candidates(LinphoneCall *call, const SalMediaDescription *md); diff --git a/include/sal/sal.h b/include/sal/sal.h index 721cefbea..58c63f0c5 100644 --- a/include/sal/sal.h +++ b/include/sal/sal.h @@ -246,8 +246,8 @@ typedef struct SalStreamDescription{ SalSrtpCryptoAlgo crypto[SAL_CRYPTO_ALGO_MAX]; unsigned int crypto_local_tag; int max_rate; - bool_t implicit_rtcp_fb; - OrtpRtcpFbConfiguration rtcp_fb; + bool_t implicit_rtcp_fb; + OrtpRtcpFbConfiguration rtcp_fb; OrtpRtcpXrConfiguration rtcp_xr; SalCustomSdpAttribute *custom_sdp_attributes; SalIceCandidate ice_candidates[SAL_MEDIA_DESCRIPTION_MAX_ICE_CANDIDATES]; @@ -255,7 +255,7 @@ typedef struct SalStreamDescription{ char ice_ufrag[SAL_MEDIA_DESCRIPTION_MAX_ICE_UFRAG_LEN]; char ice_pwd[SAL_MEDIA_DESCRIPTION_MAX_ICE_PWD_LEN]; bool_t ice_mismatch; - bool_t ice_completed; + bool_t set_nortpproxy; /*Formely set by ICE to indicate to the proxy that it has nothing to do*/ bool_t rtcp_mux; bool_t pad[1]; char dtls_fingerprint[256]; @@ -285,7 +285,7 @@ typedef struct SalMediaDescription{ char ice_ufrag[SAL_MEDIA_DESCRIPTION_MAX_ICE_UFRAG_LEN]; char ice_pwd[SAL_MEDIA_DESCRIPTION_MAX_ICE_PWD_LEN]; bool_t ice_lite; - bool_t ice_completed; + bool_t set_nortpproxy; bool_t pad[2]; } SalMediaDescription; From d0e27e4e1ae1ce7ed0750f85a13d675737f4d31d Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 15 Jan 2016 22:04:41 +0100 Subject: [PATCH 3/9] update ms2 and ortp --- mediastreamer2 | 2 +- oRTP | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mediastreamer2 b/mediastreamer2 index 005c28b9f..b6f83b3d7 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 005c28b9fc0321957a8b339000272b4cb5de8cc0 +Subproject commit b6f83b3d7048caf6660c7a163f74e0df89abf8ca diff --git a/oRTP b/oRTP index 35b2e7354..3ac1cac88 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 35b2e735421bcbaedd4422b637256987893368bc +Subproject commit 3ac1cac8859d4774ee993a1da6f0058e59a31ef4 From 23a48fa8db31706d569973e8eefe926453c0b8dc Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Mon, 18 Jan 2016 11:06:55 +0100 Subject: [PATCH 4/9] update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index b6f83b3d7..1d7705a97 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit b6f83b3d7048caf6660c7a163f74e0df89abf8ca +Subproject commit 1d7705a9741caea71682db173fa21b6a90ef655b From e8f41de8b7f39888ed1512e655796ec000bb6f9c Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Mon, 18 Jan 2016 11:10:16 +0100 Subject: [PATCH 5/9] update ortp --- oRTP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oRTP b/oRTP index 3ac1cac88..bb247d323 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 3ac1cac8859d4774ee993a1da6f0058e59a31ef4 +Subproject commit bb247d323232e35623f7f7e4c1daf0dd8cd14df1 From fcadf804ebd4963e76be83cfa52a391fdc617f90 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Mon, 18 Jan 2016 11:20:19 +0100 Subject: [PATCH 6/9] fix test that sometimes crashes when call is not established --- tester/call_tester.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tester/call_tester.c b/tester/call_tester.c index 996a0e974..57956511f 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -4568,6 +4568,7 @@ static void video_call_with_re_invite_inactive_followed_by_re_invite_base(Linpho LinphoneCallParams *params; const LinphoneCallParams *current_params; MSList *lcs=NULL; + bool_t calls_ok; marie = linphone_core_manager_new( "marie_rc"); pauline = linphone_core_manager_new(transport_supported(LinphoneTransportTls) ? "pauline_rc" : "pauline_tcp_rc"); @@ -4580,7 +4581,10 @@ static void video_call_with_re_invite_inactive_followed_by_re_invite_base(Linpho video_call_base_2(marie,pauline,TRUE,mode,TRUE,TRUE); - if (linphone_core_get_current_call(marie->lc)) { + calls_ok = linphone_core_get_current_call(marie->lc) != NULL && linphone_core_get_current_call(pauline->lc) != NULL; + BC_ASSERT_TRUE(calls_ok); + + if (calls_ok) { params=linphone_core_create_call_params(marie->lc,linphone_core_get_current_call(marie->lc)); linphone_call_params_set_audio_direction(params,LinphoneMediaDirectionInactive); linphone_call_params_set_video_direction(params,LinphoneMediaDirectionInactive); From 071581ffacb81623d1c3eb5476dbb2021c136336 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Mon, 18 Jan 2016 12:01:48 +0100 Subject: [PATCH 7/9] Declare LinphoneConference and LinphoneConferenceParams in conference.h instead of linphonecore.h --- coreapi/CMakeLists.txt | 1 + coreapi/Makefile.am | 3 ++- coreapi/conference.h | 11 +++++++++++ coreapi/linphonecore.h | 14 ++------------ 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/coreapi/CMakeLists.txt b/coreapi/CMakeLists.txt index f53b41c06..ba5277382 100644 --- a/coreapi/CMakeLists.txt +++ b/coreapi/CMakeLists.txt @@ -35,6 +35,7 @@ set(LINPHONE_HEADER_FILES buffer.h call_log.h call_params.h + conference.h content.h event.h friendlist.h diff --git a/coreapi/Makefile.am b/coreapi/Makefile.am index 0dd8febe0..353071c07 100644 --- a/coreapi/Makefile.am +++ b/coreapi/Makefile.am @@ -29,6 +29,7 @@ linphone_include_HEADERS=\ buffer.h \ call_log.h \ call_params.h \ + conference.h \ content.h \ event.h \ friendlist.h \ @@ -57,7 +58,7 @@ liblinphone_la_SOURCES=\ call_params.c \ chat.c \ chat_file_transfer.c \ - conference.cc conference.h conference_private.h \ + conference.cc conference_private.h \ contactprovider.c contactprovider.h contact_providers_priv.h \ content.c \ dict.c \ diff --git a/coreapi/conference.h b/coreapi/conference.h index 90da4b0b7..a043a8a33 100644 --- a/coreapi/conference.h +++ b/coreapi/conference.h @@ -37,6 +37,11 @@ extern "C" { * @{ */ +/** + * Parameters for initialization of conferences + */ +typedef struct _LinphoneCorferenceParams LinphoneConferenceParams; + /** * Create a #LinphoneConferenceParams with default parameters set. * @param core #LinphoneCore to use to find out the default parameters. Can be NULL. @@ -67,6 +72,12 @@ LINPHONE_PUBLIC void linphone_conference_params_enable_video(LinphoneConferenceP LINPHONE_PUBLIC bool_t linphone_conference_params_video_requested(const LinphoneConferenceParams *params); + +/** + * LinphoneConference class + */ +typedef struct _LinphoneConference LinphoneConference; + /** * Remove a participant from a conference * @param obj A #LinphoneConference diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index 07ce58813..6fa40625a 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -66,18 +66,6 @@ struct _LinphoneInfoMessage; */ typedef struct _LinphoneCore LinphoneCore; -/** - * Internal object of LinphoneCore representing a conference - * @ingroup call_control - */ -typedef struct _LinphoneConference LinphoneConference; - -/** - * Parameters for initialization of conferences - * @ingroup call_control - */ -typedef struct _LinphoneCorferenceParams LinphoneConferenceParams; - /** * Disable a sip transport @@ -423,6 +411,7 @@ LINPHONE_PUBLIC const char* linphone_privacy_to_string(LinphonePrivacy privacy); #include "event.h" #include "linphonefriend.h" #include "xmlrpc.h" +#include "conference.h" #else #include "linphone/buffer.h" #include "linphone/call_log.h" @@ -431,6 +420,7 @@ LINPHONE_PUBLIC const char* linphone_privacy_to_string(LinphonePrivacy privacy); #include "linphone/event.h" #include "linphone/linphonefriend.h" #include "linphone/xmlrpc.h" +#include "linphone/conference.h" #endif LINPHONE_PUBLIC LinphoneAddress * linphone_address_new(const char *addr); From edfa2cc3e744372161f1f6e4145277f5901c90f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Mon, 18 Jan 2016 12:11:50 +0100 Subject: [PATCH 8/9] Updates ortp to fix some doxygen compilation issues --- oRTP | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oRTP b/oRTP index bb247d323..16848a37a 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit bb247d323232e35623f7f7e4c1daf0dd8cd14df1 +Subproject commit 16848a37aa9c0231a8fd0bfd201b05ebaae81fff From 67f9bd2068ab6d040ddadd4209a538aef99a893a Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Mon, 18 Jan 2016 13:31:18 +0100 Subject: [PATCH 9/9] linphonecore.c: since log level is a mask, do not compare with == operator but & instead --- coreapi/linphonecore.c | 56 ++++++++++-------------------------------- coreapi/linphonecore.h | 28 +++++++++++++++++++++ oRTP | 2 +- 3 files changed, 42 insertions(+), 44 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 27965a84e..633360a7a 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -287,24 +287,19 @@ static void linphone_core_log_collection_handler(OrtpLogLevel level, const char ortp_gettimeofday(&tp, NULL); tt = (time_t)tp.tv_sec; lt = localtime((const time_t*)&tt); - switch(level){ - case ORTP_DEBUG: - lname = "DEBUG"; - break; - case ORTP_MESSAGE: - lname = "MESSAGE"; - break; - case ORTP_WARNING: - lname = "WARNING"; - break; - case ORTP_ERROR: - lname = "ERROR"; - break; - case ORTP_FATAL: - lname = "FATAL"; - break; - default: - ortp_fatal("Bad level !"); + + if ((level & ORTP_DEBUG) != 0) { + lname = "DEBUG"; + } else if ((level & ORTP_MESSAGE) != 0) { + lname = "MESSAGE"; + } else if ((level & ORTP_WARNING) != 0) { + lname = "WARNING"; + } else if ((level & ORTP_ERROR) != 0) { + lname = "ERROR"; + } else if ((level & ORTP_FATAL) != 0) { + lname = "FATAL"; + } else { + ortp_fatal("Bad level !"); } msg = ortp_strdup_vprintf(fmt, args); @@ -725,42 +720,17 @@ void linphone_core_reset_log_collection(void) { ortp_mutex_unlock(&liblinphone_log_collection_mutex); } -/** - * Enable logs in supplied FILE*. - * - * @ingroup misc - * @deprecated Use #linphone_core_set_log_file and #linphone_core_set_log_level instead. - * - * @param file a C FILE* where to fprintf logs. If null stdout is used. - * -**/ void linphone_core_enable_logs(FILE *file){ if (file==NULL) file=stdout; ortp_set_log_file(file); linphone_core_set_log_level(ORTP_MESSAGE); } -/** - * Enable logs through the user's supplied log callback. - * - * @ingroup misc - * @deprecated Use #linphone_core_set_log_handler and #linphone_core_set_log_level instead. - * - * @param logfunc The address of a OrtpLogFunc callback whose protoype is - * typedef void (*OrtpLogFunc)(OrtpLogLevel lev, const char *fmt, va_list args); - * -**/ void linphone_core_enable_logs_with_cb(OrtpLogFunc logfunc){ linphone_core_set_log_level(ORTP_MESSAGE); linphone_core_set_log_handler(logfunc); } -/** - * Entirely disable logging. - * - * @ingroup misc - * @deprecated Use #linphone_core_set_log_level instead. -**/ void linphone_core_disable_logs(void){ linphone_core_set_log_level(ORTP_ERROR); } diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index 6fa40625a..0fb78538e 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -2303,8 +2303,36 @@ LINPHONE_PUBLIC void linphone_core_set_log_level(OrtpLogLevel loglevel); * @param loglevel A bitmask of the log levels to set. */ LINPHONE_PUBLIC void linphone_core_set_log_level_mask(OrtpLogLevel loglevel); + +/** + * Enable logs in supplied FILE*. + * + * @ingroup misc + * @deprecated Use #linphone_core_set_log_file and #linphone_core_set_log_level instead. + * + * @param file a C FILE* where to fprintf logs. If null stdout is used. + * +**/ LINPHONE_PUBLIC void linphone_core_enable_logs(FILE *file); + +/** + * Enable logs through the user's supplied log callback. + * + * @ingroup misc + * @deprecated Use #linphone_core_set_log_handler and #linphone_core_set_log_level instead. + * + * @param logfunc The address of a OrtpLogFunc callback whose protoype is + * typedef void (*OrtpLogFunc)(OrtpLogLevel lev, const char *fmt, va_list args); + * +**/ LINPHONE_PUBLIC void linphone_core_enable_logs_with_cb(OrtpLogFunc logfunc); + +/** + * Entirely disable logging. + * + * @ingroup misc + * @deprecated Use #linphone_core_set_log_level instead. +**/ LINPHONE_PUBLIC void linphone_core_disable_logs(void); /** diff --git a/oRTP b/oRTP index 16848a37a..761cfd7c0 160000 --- a/oRTP +++ b/oRTP @@ -1 +1 @@ -Subproject commit 16848a37aa9c0231a8fd0bfd201b05ebaae81fff +Subproject commit 761cfd7c0eb76359b0dabeffd6533071b41a2914