From b5e52a00ad3e9d47aa8dbffacfbbf266c8ff15d4 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Wed, 25 Nov 2015 16:04:49 +0100 Subject: [PATCH 01/18] Reflect changes to belle-sip that add a new parameter to belle_sip_muiltpart_body_handler_new(). --- coreapi/chat_file_transfer.c | 3 +-- coreapi/linphonecore.c | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/coreapi/chat_file_transfer.c b/coreapi/chat_file_transfer.c index cf5318da0..03190ce7f 100644 --- a/coreapi/chat_file_transfer.c +++ b/coreapi/chat_file_transfer.c @@ -215,8 +215,7 @@ static void linphone_chat_message_process_response_from_post_file(void *data, linphone_content_get_subtype(msg->file_transfer_information))); /* insert it in a multipart body handler which will manage the boundaries of multipart msg */ - bh = belle_sip_multipart_body_handler_new(linphone_chat_message_file_transfer_on_progress, msg, - first_part_bh); + bh = belle_sip_multipart_body_handler_new(linphone_chat_message_file_transfer_on_progress, msg, first_part_bh, NULL); linphone_chat_message_ref(msg); _release_http_request(msg); diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 09f92c098..38da0256e 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -520,7 +520,7 @@ static void process_response_from_post_file_log_collection(void *data, const bel (belle_sip_header_t *)belle_sip_header_content_type_create(linphone_content_get_type(core->log_collection_upload_information), linphone_content_get_subtype(core->log_collection_upload_information))); /* Insert it in a multipart body handler which will manage the boundaries of multipart message */ - bh = belle_sip_multipart_body_handler_new(log_collection_upload_on_progress, core, (belle_sip_body_handler_t *)first_part_bh); + bh = belle_sip_multipart_body_handler_new(log_collection_upload_on_progress, core, (belle_sip_body_handler_t *)first_part_bh, NULL); ua = ms_strdup_printf("%s/%s", linphone_core_get_user_agent_name(), linphone_core_get_user_agent_version()); uri = belle_generic_uri_parse(linphone_core_get_log_collection_upload_server_url(core)); req = belle_http_request_create("POST", uri, belle_sip_header_create("User-Agent", ua), NULL); From 24cf297628b379f46ad25003c4af569142ce55d6 Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Thu, 26 Nov 2015 11:24:55 +0100 Subject: [PATCH 02/18] fix some warnings, update submodule ms2 --- coreapi/linphonecore.h | 6 +++--- coreapi/private.h | 12 +++++++++++- coreapi/proxy.c | 4 ++-- gtk/friendlist.c | 4 ++-- gtk/incall_view.c | 2 +- gtk/loginframe.c | 2 +- gtk/main.c | 35 +++-------------------------------- mediastreamer2 | 2 +- tester/call_tester.c | 37 ++++++++++++++++++++++++++++++++++++- 9 files changed, 60 insertions(+), 44 deletions(-) diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index f8fcec461..6d6444f03 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -3360,11 +3360,11 @@ LINPHONE_PUBLIC bool_t linphone_core_video_supported(LinphoneCore *lc); LINPHONE_PUBLIC LINPHONE_DEPRECATED void linphone_core_enable_video(LinphoneCore *lc, bool_t vcap_enabled, bool_t display_enabled); /** - * Returns TRUE if video is enabled, FALSE otherwise. + * Returns TRUE if either capture or display is enabled, FALSE otherwise. + * same as ( #linphone_core_video_capture_enabled | #linphone_core_video_display_enabled ) * @ingroup media_parameters - * @deprecated Use #linphone_core_video_capture_enabled and #linphone_core_video_display_enabled instead. **/ -LINPHONE_PUBLIC LINPHONE_DEPRECATED bool_t linphone_core_video_enabled(LinphoneCore *lc); +LINPHONE_PUBLIC bool_t linphone_core_video_enabled(LinphoneCore *lc); /** * Enable or disable video capture. diff --git a/coreapi/private.h b/coreapi/private.h index 84d26357e..6f7e033ea 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -213,7 +213,6 @@ struct _LinphoneChatMessage { LinphoneChatMessageCbs *callbacks; LinphoneChatMessageDir dir; char* message; - LinphoneChatMessageStateChangedCb message_state_changed_cb; void* message_state_changed_user_data; void* message_userdata; char* appdata; @@ -231,6 +230,15 @@ struct _LinphoneChatMessage { belle_http_request_t *http_request; /**< keep a reference to the http_request in case of file transfer in order to be able to cancel the transfer */ belle_http_request_listener_t *http_listener; /* our listener, only owned by us*/ char *file_transfer_filepath; + +#if __clang__ || ((__GNUC__ == 4 && __GNUC_MINOR__ >= 6) || __GNUC__ > 4) +#pragma GCC diagnostic push +#endif +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" + LinphoneChatMessageStateChangedCb message_state_changed_cb; +#if __clang__ || ((__GNUC__ == 4 && __GNUC_MINOR__ >= 6) || __GNUC__ > 4) +#pragma GCC diagnostic pop +#endif }; BELLE_SIP_DECLARE_VPTR(LinphoneChatMessage); @@ -1386,6 +1394,8 @@ bool_t linphone_core_lime_for_file_sharing_enabled(const LinphoneCore *lc); BELLE_SIP_DECLARE_VPTR(LinphoneTunnelConfig); +int linphone_core_get_default_proxy_config_index(LinphoneCore *lc); + #ifdef __cplusplus } #endif diff --git a/coreapi/proxy.c b/coreapi/proxy.c index c7351522e..5bd819b9f 100644 --- a/coreapi/proxy.c +++ b/coreapi/proxy.c @@ -93,7 +93,7 @@ void linphone_proxy_config_write_all_to_config_file(LinphoneCore *lc){ } /*to ensure removed configs are erased:*/ linphone_proxy_config_write_to_config_file(lc->config,NULL,i); - lp_config_set_int(lc->config,"sip","default_proxy",linphone_core_get_default_proxy(lc,NULL)); + lp_config_set_int(lc->config,"sip","default_proxy",linphone_core_get_default_proxy_config_index(lc)); } static void linphone_proxy_config_init(LinphoneCore* lc, LinphoneProxyConfig *cfg) { @@ -1167,7 +1167,7 @@ void linphone_core_clear_proxy_config(LinphoneCore *lc){ linphone_proxy_config_write_all_to_config_file(lc); } -static int linphone_core_get_default_proxy_config_index(LinphoneCore *lc) { +int linphone_core_get_default_proxy_config_index(LinphoneCore *lc) { int pos = -1; if (lc->default_proxy != NULL) { pos = ms_list_position(lc->sip_conf.proxies, ms_list_find(lc->sip_conf.proxies, (void *)lc->default_proxy)); diff --git a/gtk/friendlist.c b/gtk/friendlist.c index 120192483..41bc18ee1 100644 --- a/gtk/friendlist.c +++ b/gtk/friendlist.c @@ -652,7 +652,7 @@ gboolean linphone_gtk_directory_search_focus_in(GtkWidget *entry){ void linphone_gtk_directory_search_activate(GtkWidget *entry){ LinphoneProxyConfig *cfg; GtkWidget *w; - linphone_core_get_default_proxy(linphone_gtk_get_core(),&cfg); + cfg = linphone_core_get_default_proxy_config(linphone_gtk_get_core()); w=linphone_gtk_show_buddy_lookup_window(linphone_proxy_config_get_sip_setup_context(cfg)); if (GPOINTER_TO_INT(g_object_get_data(G_OBJECT(entry),"active"))==1) linphone_gtk_buddy_lookup_set_keyword(w,gtk_entry_get_text(GTK_ENTRY(entry))); @@ -809,7 +809,7 @@ static GtkWidget *linphone_gtk_create_contact_menu(GtkWidget *contact_list){ SipSetupContext * ssc=NULL; bool_t show_menu_separator=FALSE; - linphone_core_get_default_proxy(lc,&cfg); + cfg = linphone_core_get_default_proxy_config(lc); if (cfg){ ssc=linphone_proxy_config_get_sip_setup_context(cfg); } diff --git a/gtk/incall_view.c b/gtk/incall_view.c index e099b963d..5c7620840 100644 --- a/gtk/incall_view.c +++ b/gtk/incall_view.c @@ -914,7 +914,7 @@ void linphone_gtk_draw_mute_button(GtkButton *button, gboolean active){ void linphone_gtk_mute_clicked(GtkButton *button){ int active=GPOINTER_TO_INT(g_object_get_data(G_OBJECT(button),"active")); - linphone_core_mute_mic(linphone_gtk_get_core(),!active); + linphone_core_enable_mic(linphone_gtk_get_core(),active); linphone_gtk_draw_mute_button(button,!active); } diff --git a/gtk/loginframe.c b/gtk/loginframe.c index 40748494b..fabd89c67 100644 --- a/gtk/loginframe.c +++ b/gtk/loginframe.c @@ -143,7 +143,7 @@ void linphone_gtk_exit_login_frame(void){ void linphone_gtk_logout_clicked(void){ LinphoneCore *lc=linphone_gtk_get_core(); LinphoneProxyConfig *cfg=NULL; - linphone_core_get_default_proxy(lc,&cfg); + cfg = linphone_core_get_default_proxy_config(lc); if (cfg){ SipSetupContext *ss=linphone_proxy_config_get_sip_setup_context(cfg); if (ss){ diff --git a/gtk/main.c b/gtk/main.c index 7dc818271..8fd8cafa1 100644 --- a/gtk/main.c +++ b/gtk/main.c @@ -71,7 +71,6 @@ static void linphone_gtk_new_unknown_subscriber(LinphoneCore *lc, LinphoneFriend static void linphone_gtk_auth_info_requested(LinphoneCore *lc, const char *realm, const char *username, const char *domain); static void linphone_gtk_display_status(LinphoneCore *lc, const char *status); static void linphone_gtk_configuring_status(LinphoneCore *lc, LinphoneConfiguringState status, const char *message); -static void linphone_gtk_display_message(LinphoneCore *lc, const char *msg); static void linphone_gtk_display_warning(LinphoneCore *lc, const char *warning); static void linphone_gtk_display_url(LinphoneCore *lc, const char *msg, const char *url); static void linphone_gtk_call_log_updated(LinphoneCore *lc, LinphoneCallLog *cl); @@ -267,12 +266,7 @@ static void linphone_gtk_init_liblinphone(const char *config_file, vtable.notify_presence_received=linphone_gtk_notify_recv; vtable.new_subscription_requested=linphone_gtk_new_unknown_subscriber; vtable.auth_info_requested=linphone_gtk_auth_info_requested; - vtable.display_status=linphone_gtk_display_status; - vtable.display_message=linphone_gtk_display_message; - vtable.display_warning=linphone_gtk_display_warning; - vtable.display_url=linphone_gtk_display_url; vtable.call_log_updated=linphone_gtk_call_log_updated; - //vtable.text_received=linphone_gtk_text_received; vtable.message_received=linphone_gtk_text_received; vtable.is_composing_received=linphone_gtk_is_composing_received; vtable.refer_received=linphone_gtk_refer_received; @@ -1133,34 +1127,12 @@ static void linphone_gtk_dtmf_received(LinphoneCore *lc, LinphoneCall *call, int ms_message("Dtmf %c received.",dtmf); } -static void linphone_gtk_display_status(LinphoneCore *lc, const char *status){ - GtkWidget *w=linphone_gtk_get_main_window(); - GtkWidget *status_bar=linphone_gtk_get_widget(w,"status_bar"); - - gtk_statusbar_push(GTK_STATUSBAR(status_bar), - gtk_statusbar_get_context_id(GTK_STATUSBAR(status_bar),""), - status); -} static void linphone_gtk_configuring_status(LinphoneCore *lc, LinphoneConfiguringState status, const char *message) { if (config_fetching_dialog) linphone_gtk_close_config_fetching(config_fetching_dialog, status); config_fetching_dialog=NULL; } -static void linphone_gtk_display_message(LinphoneCore *lc, const char *msg){ - linphone_gtk_display_something(GTK_MESSAGE_INFO,msg); -} - -static void linphone_gtk_display_warning(LinphoneCore *lc, const char *warning){ - linphone_gtk_display_something(GTK_MESSAGE_WARNING,warning); -} - -static void linphone_gtk_display_url(LinphoneCore *lc, const char *msg, const char *url){ - char richtext[4096]; - snprintf(richtext,sizeof(richtext),"%s %s",msg,url); - linphone_gtk_display_something(GTK_MESSAGE_INFO,richtext); -} - static void linphone_gtk_call_log_updated(LinphoneCore *lc, LinphoneCallLog *cl){ GtkWidget *w=(GtkWidget*)g_object_get_data(G_OBJECT(linphone_gtk_get_main_window()),"call_logs"); if (w) linphone_gtk_call_log_update(w); @@ -1624,7 +1596,7 @@ void linphone_gtk_load_identities(void){ store=GTK_LIST_STORE(gtk_combo_box_get_model(box)); } gtk_list_store_clear(store); - linphone_core_get_default_proxy(linphone_gtk_get_core(),&def); + def = linphone_core_get_default_proxy_config(linphone_gtk_get_core()); def_identity=g_strdup_printf(_("%s (Default)"),linphone_core_get_primary_contact(linphone_gtk_get_core())); gtk_list_store_append(store,&iter); gtk_list_store_set(store,&iter,0,def_identity,1,NULL,2,NULL,-1); @@ -1651,7 +1623,7 @@ static void linphone_gtk_dtmf_pressed(GtkButton *button){ gtk_editable_insert_text(GTK_EDITABLE(uri_bar),label,1,&pos); linphone_core_play_dtmf (linphone_gtk_get_core(),label[0],-1); if (linphone_core_in_call(linphone_gtk_get_core())){ - linphone_core_send_dtmf(linphone_gtk_get_core(),label[0]); + linphone_call_send_dtmf(linphone_core_get_current_call(linphone_gtk_get_core()),label[0]); } } @@ -1738,8 +1710,7 @@ static void linphone_gtk_configure_main_window(void){ void linphone_gtk_manage_login(void){ LinphoneCore *lc=linphone_gtk_get_core(); - LinphoneProxyConfig *cfg=NULL; - linphone_core_get_default_proxy(lc,&cfg); + LinphoneProxyConfig *cfg=linphone_core_get_default_proxy_config(lc); if (cfg){ SipSetup *ss=linphone_proxy_config_get_sip_setup(cfg); if (ss && (sip_setup_get_capabilities(ss) & SIP_SETUP_CAP_LOGIN)){ diff --git a/mediastreamer2 b/mediastreamer2 index 40fb0cfc7..7f3545941 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 40fb0cfc7c89bc8d59d220d76800dda600c9cb93 +Subproject commit 7f354594173d11cf30eb5cee470c41966d13fe99 diff --git a/tester/call_tester.c b/tester/call_tester.c index c6973f3a0..ea148568d 100644 --- a/tester/call_tester.c +++ b/tester/call_tester.c @@ -5499,6 +5499,40 @@ static void call_with_ice_and_rtcp_mux_without_reinvite(void){ _call_with_rtcp_mux(TRUE, TRUE, TRUE,FALSE); } +static void call_with_zrtp_configured_calling_base(LinphoneCoreManager *marie, LinphoneCoreManager *pauline) { + bool_t call_ok; + + linphone_core_set_media_encryption(marie->lc, LinphoneMediaEncryptionZRTP); + BC_ASSERT_TRUE((call_ok=call(pauline,marie))); + + liblinphone_tester_check_rtcp(marie,pauline); + + BC_ASSERT_EQUAL(linphone_call_params_get_media_encryption(linphone_call_get_current_params(linphone_core_get_current_call(marie->lc))) + , LinphoneMediaEncryptionNone, int, "%i"); + BC_ASSERT_EQUAL(linphone_call_params_get_media_encryption(linphone_call_get_current_params(linphone_core_get_current_call(pauline->lc))) + , LinphoneMediaEncryptionNone, int, "%i"); + end_call(pauline, marie); + +} +static void call_with_zrtp_configured_calling_side(void) { + LinphoneCoreManager* marie = linphone_core_manager_new("marie_rc"); + LinphoneCoreManager* pauline = linphone_core_manager_new(transport_supported(LinphoneTransportTls) ? "pauline_rc" : "pauline_tcp_rc"); + + call_with_zrtp_configured_calling_base(marie,pauline); + + linphone_core_set_user_agent(pauline->lc, "Natted Linphone", NULL); + linphone_core_set_user_agent(marie->lc, "Natted Linphone", NULL); + call_with_zrtp_configured_calling_base(marie,pauline); + + linphone_core_set_firewall_policy(marie->lc,LinphonePolicyUseIce); + linphone_core_set_firewall_policy(pauline->lc,LinphonePolicyUseIce); + call_with_zrtp_configured_calling_base(marie,pauline); + + linphone_core_manager_destroy(marie); + linphone_core_manager_destroy(pauline); + + +} test_t call_tests[] = { { "Early declined call", early_declined_call }, { "Call declined", call_declined }, @@ -5661,7 +5695,8 @@ test_t call_tests[] = { { "Call with rtcp-mux", call_with_rtcp_mux}, { "Call with rtcp-mux not accepted", call_with_rtcp_mux_not_accepted}, { "Call with ICE and rtcp-mux", call_with_ice_and_rtcp_mux}, - { "Call with ICE and rtcp-mux without ICE re-invite", call_with_ice_and_rtcp_mux_without_reinvite} + { "Call with ICE and rtcp-mux without ICE re-invite", call_with_ice_and_rtcp_mux_without_reinvite}, + { "call with ZRTP configured calling side only", call_with_zrtp_configured_calling_side} }; test_suite_t call_test_suite = {"Single Call", NULL, NULL, liblinphone_tester_before_each, liblinphone_tester_after_each, From 07ecd098292db5c74eded7b7d788e9655c8391a9 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 26 Nov 2015 11:51:17 +0100 Subject: [PATCH 03/18] add LinphoneCore.setNortpTimeout() java wrapper --- coreapi/linphonecore_jni.cc | 19 ++++++++++++++++++ .../org/linphone/core/LinphoneCore.java | 11 ++++++++++ .../org/linphone/core/LinphoneCoreImpl.java | 20 ++++++++++++++----- 3 files changed, 45 insertions(+), 5 deletions(-) diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index 433efcae4..9638fe9de 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -6570,4 +6570,23 @@ JNIEXPORT jint JNICALL Java_org_linphone_core_LinphoneCoreImpl_getSipTransportTi return linphone_core_get_sip_transport_timeout((LinphoneCore*)pcore); } +/* + * Class: org_linphone_core_LinphoneCoreImpl + * Method: setNortpTimeout + * Signature: (JI)V + */ +JNIEXPORT void JNICALL Java_org_linphone_core_LinphoneCoreImpl_setNortpTimeout(JNIEnv *env, jobject obj, jlong core, jint timeout){ + linphone_core_set_nortp_timeout((LinphoneCore*)core, timeout); +} + +/* + * Class: org_linphone_core_LinphoneCoreImpl + * Method: getNortpTimeout + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_org_linphone_core_LinphoneCoreImpl_getNortpTimeout(JNIEnv *env, jobject obj, jlong core){ + return linphone_core_get_nortp_timeout((LinphoneCore*)core); +} + + diff --git a/java/common/org/linphone/core/LinphoneCore.java b/java/common/org/linphone/core/LinphoneCore.java index f2ce0ccab..af0de0501 100644 --- a/java/common/org/linphone/core/LinphoneCore.java +++ b/java/common/org/linphone/core/LinphoneCore.java @@ -2220,4 +2220,15 @@ public interface LinphoneCore { **/ public int getHttpProxyPort(); + /* + * Set the nortp timeout (timeout after which call is closed if no RTP or RTCP packets are received). + */ + public void setNortpTimeout(int seconds); + + /** + * Get the nortp timeout. + * @return + */ + public int getNortpTimeout(); + } diff --git a/java/impl/org/linphone/core/LinphoneCoreImpl.java b/java/impl/org/linphone/core/LinphoneCoreImpl.java index 87842c78e..535d1dad7 100644 --- a/java/impl/org/linphone/core/LinphoneCoreImpl.java +++ b/java/impl/org/linphone/core/LinphoneCoreImpl.java @@ -1111,7 +1111,7 @@ class LinphoneCoreImpl implements LinphoneCore { private native void setSipDscp(long nativePtr, int dscp); @Override public synchronized void setSipDscp(int dscp) { - setSipDscp(nativePtr,dscp); + setSipDscp(nativePtr, dscp); } private native int getSipDscp(long nativePtr); @@ -1276,7 +1276,7 @@ class LinphoneCoreImpl implements LinphoneCore { private native void setMtu(long nativePtr, int mtu); @Override public synchronized void setMtu(int mtu) { - setMtu(nativePtr,mtu); + setMtu(nativePtr, mtu); } private native int getMtu(long nativePtr); @Override @@ -1285,7 +1285,7 @@ class LinphoneCoreImpl implements LinphoneCore { } @Override public synchronized void enableSdp200Ack(boolean enable) { - enableSdp200Ack(nativePtr,enable); + enableSdp200Ack(nativePtr, enable); } @Override public synchronized boolean isSdp200AckEnabled() { @@ -1340,7 +1340,7 @@ class LinphoneCoreImpl implements LinphoneCore { @Override public synchronized void enableAdaptiveRateControl(boolean enable) { - enableAdaptiveRateControl(nativePtr,enable); + enableAdaptiveRateControl(nativePtr, enable); } @Override @@ -1423,7 +1423,7 @@ class LinphoneCoreImpl implements LinphoneCore { private native void setPreferredFramerate(long nativePtr, float fps); @Override public void setPreferredFramerate(float fps) { - setPreferredFramerate(nativePtr,fps); + setPreferredFramerate(nativePtr, fps); } private native float getPreferredFramerate(long nativePtr); @Override @@ -1578,5 +1578,15 @@ class LinphoneCoreImpl implements LinphoneCore { public int getSipTransportTimeout(){ return getSipTransportTimeout(nativePtr); } + private native void setNortpTimeout(long nativePtr, int timeout); + @Override + public void setNortpTimeout(int timeout){ + setNortpTimeout(nativePtr, timeout); + } + private native int getNortpTimeout(long nativePtr); + @Override + public int getNortpTimeout(){ + return getNortpTimeout(nativePtr); + } } From 8d605739a98931d34bfe69eb8d1d9eaa9ad2017e Mon Sep 17 00:00:00 2001 From: Sandrine Avakian Date: Thu, 26 Nov 2015 15:13:39 +0100 Subject: [PATCH 04/18] Adding ifdef VIDEO ENABLED for tests : "Session report sent if video stopped during call", quality_reporting_session_report_if_video_stopped "Interval report if interval is configured with video and realtime text", quality_reporting_interval_report_video_and_rtt --- tester/quality_reporting_tester.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tester/quality_reporting_tester.c b/tester/quality_reporting_tester.c index 0fb1b0c7b..d4e0b3df3 100644 --- a/tester/quality_reporting_tester.c +++ b/tester/quality_reporting_tester.c @@ -279,6 +279,7 @@ static void quality_reporting_interval_report(void) { linphone_core_manager_destroy(pauline); } +#ifdef VIDEO_ENABLED static void quality_reporting_session_report_if_video_stopped(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc_rtcp_xr"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_tcp_rc"); @@ -325,6 +326,7 @@ static void quality_reporting_session_report_if_video_stopped(void) { linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); } +#endif void publish_report_with_route_state_changed(LinphoneCore *lc, LinphoneEvent *ev, LinphonePublishState state){ if (state == LinphonePublishProgress) { @@ -358,6 +360,7 @@ static void quality_reporting_sent_using_custom_route(void) { linphone_core_manager_destroy(pauline); } +#ifdef VIDEO_ENABLED static void quality_reporting_interval_report_video_and_rtt(void) { LinphoneCoreManager* marie = linphone_core_manager_new( "marie_rc_rtcp_xr"); LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_rc_rtcp_xr"); @@ -418,6 +421,7 @@ static void quality_reporting_interval_report_video_and_rtt(void) { linphone_core_manager_destroy(marie); linphone_core_manager_destroy(pauline); } +#endif test_t quality_reporting_tests[] = { { "Not used if no config", quality_reporting_not_used_without_config}, From 537aebfcf27fb9198775ab14ff0f5e983353bd3a Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 26 Nov 2015 16:22:42 +0100 Subject: [PATCH 05/18] fix compilation error --- gtk/main.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/gtk/main.c b/gtk/main.c index 8fd8cafa1..ba91fd3b3 100644 --- a/gtk/main.c +++ b/gtk/main.c @@ -69,10 +69,7 @@ static void linphone_gtk_registration_state_changed(LinphoneCore *lc, LinphonePr static void linphone_gtk_notify_recv(LinphoneCore *lc, LinphoneFriend * fid); static void linphone_gtk_new_unknown_subscriber(LinphoneCore *lc, LinphoneFriend *lf, const char *url); static void linphone_gtk_auth_info_requested(LinphoneCore *lc, const char *realm, const char *username, const char *domain); -static void linphone_gtk_display_status(LinphoneCore *lc, const char *status); static void linphone_gtk_configuring_status(LinphoneCore *lc, LinphoneConfiguringState status, const char *message); -static void linphone_gtk_display_warning(LinphoneCore *lc, const char *warning); -static void linphone_gtk_display_url(LinphoneCore *lc, const char *msg, const char *url); static void linphone_gtk_call_log_updated(LinphoneCore *lc, LinphoneCallLog *cl); static void linphone_gtk_call_state_changed(LinphoneCore *lc, LinphoneCall *call, LinphoneCallState cs, const char *msg); static void linphone_gtk_call_encryption_changed(LinphoneCore *lc, LinphoneCall *call, bool_t enabled, const char *token); From 4b68da41518b4d16fd4c7a9ced6cbbcd06af71b5 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 26 Nov 2015 21:59:44 +0100 Subject: [PATCH 06/18] enhance lp-auto-answer so that it is able to play audio/video mkv files --- coreapi/linphonecall.c | 24 ++++++++++++++++++------ coreapi/private.h | 1 + tools/auto_answer.c | 32 ++++++++++++++++++++++++++------ 3 files changed, 45 insertions(+), 12 deletions(-) diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index a0b20ec63..fa024a590 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -2929,6 +2929,16 @@ static RtpSession * create_audio_rtp_io_session(LinphoneCall *call) { return rtp_session; } +static void linphone_call_set_on_hold_file(LinphoneCall *call, const char *file){ + if (call->onhold_file){ + ms_free(call->onhold_file); + call->onhold_file = NULL; + } + if (file){ + call->onhold_file = ms_strdup(file); + } +} + static void linphone_call_start_audio_stream(LinphoneCall *call, LinphoneCallState next_state, bool_t use_arc){ LinphoneCore *lc=call->core; int used_pt=-1; @@ -3069,12 +3079,6 @@ static void linphone_call_start_audio_stream(LinphoneCall *call, LinphoneCallSta &io); if (err == 0){ post_configure_audio_streams(call, (call->all_muted || call->audio_muted) && !call->playing_ringbacktone); - if (file_to_play){ - MSFilter *player = audio_stream_open_remote_play(call->audiostream, file_to_play); - if (player){ - ms_filter_call_method_noarg(player, MS_PLAYER_START); - } - } } } @@ -3097,6 +3101,7 @@ static void linphone_call_start_audio_stream(LinphoneCall *call, LinphoneCallSta call->current_params->low_bandwidth=call->params->low_bandwidth; }else ms_warning("No audio stream accepted ?"); } + linphone_call_set_on_hold_file(call, file_to_play); } #ifdef VIDEO_ENABLED @@ -3428,6 +3433,13 @@ void linphone_call_start_media_streams(LinphoneCall *call, LinphoneCallState nex if (call->audiostream) audio_stream_link_video(call->audiostream,call->videostream); linphone_call_start_video_stream(call, next_state); } + /*the onhold file is to be played once both audio and video are ready.*/ + if (call->onhold_file && call->audiostream){ + MSFilter *player = audio_stream_open_remote_play(call->audiostream, call->onhold_file); + if (player){ + ms_filter_call_method_noarg(player, MS_PLAYER_START); + } + } call->up_bw=linphone_core_get_upload_bandwidth(lc); diff --git a/coreapi/private.h b/coreapi/private.h index 6f7e033ea..1a10bed92 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -318,6 +318,7 @@ struct _LinphoneCall{ belle_sip_source_t *dtmfs_timer; /*DTMF timer needed to send a DTMF sequence*/ char *dtls_certificate_fingerprint; /**> This fingerprint is computed during stream init and is stored in call to be used when making local media description */ + char *onhold_file; /*set if a on-hold file is to be played*/ LinphoneChatRoom *chat_room; bool_t refer_pending; bool_t expect_media_in_ack; diff --git a/tools/auto_answer.c b/tools/auto_answer.c index 174d9e235..8cedc9bc0 100644 --- a/tools/auto_answer.c +++ b/tools/auto_answer.c @@ -55,7 +55,7 @@ static void call_state_changed(LinphoneCore *lc, LinphoneCall *call, LinphoneCal LinphoneCallParams * call_params; switch(cstate){ case LinphoneCallIncomingReceived: - ms_message("Incoming call arrive !\n"); + ms_message("Incoming call arriving !\n"); /* accept the incoming call*/ call_params = linphone_core_create_call_params(lc, call); linphone_call_params_enable_video(call_params,TRUE); @@ -63,7 +63,6 @@ static void call_state_changed(LinphoneCore *lc, LinphoneCall *call, LinphoneCal linphone_call_params_set_video_direction(call_params,LinphoneMediaDirectionSendOnly); linphone_core_accept_call_with_params(lc,call,call_params); linphone_call_params_destroy(call_params); - break; default: break; @@ -74,6 +73,7 @@ static void helper(const char *progname) { printf("%s --help\n" "\t\t\t--listening-uri uri to listen on, default [sip:localhost:5060]\n" "\t\t\t--max-call-duration max duration of a call in seconds, default [3600]\n" + "\t\t\t--media-file \n" "\t\t\t--verbose\n", progname); exit(0); } @@ -88,6 +88,7 @@ int main(int argc, char *argv[]){ char * tmp = NULL; LpConfig * lp_config = lp_config_new(NULL); int max_call_duration=3600; + static const char *media_file = NULL; policy.automatically_accept=TRUE; signal(SIGINT,stop); @@ -115,6 +116,11 @@ int main(int argc, char *argv[]){ helper(); break; }*/ + } else if (strcmp(argv[i], "--media-file") == 0){ + i++; + if (i Date: Thu, 26 Nov 2015 23:08:02 +0100 Subject: [PATCH 07/18] fix crash --- coreapi/linphonecall.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index fa024a590..76621ab7c 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -3434,7 +3434,7 @@ void linphone_call_start_media_streams(LinphoneCall *call, LinphoneCallState nex linphone_call_start_video_stream(call, next_state); } /*the onhold file is to be played once both audio and video are ready.*/ - if (call->onhold_file && call->audiostream){ + if (call->onhold_file && !call->params->in_conference && call->audiostream){ MSFilter *player = audio_stream_open_remote_play(call->audiostream, call->onhold_file); if (player){ ms_filter_call_method_noarg(player, MS_PLAYER_START); From 2a3495cd4ae58b75898bd01f3c3ee5d7f9b20bde Mon Sep 17 00:00:00 2001 From: Sandrine Avakian Date: Fri, 27 Nov 2015 10:21:15 +0100 Subject: [PATCH 08/18] Fixing omitted ifdef VIDEO_ENABLED missing. --- tester/quality_reporting_tester.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tester/quality_reporting_tester.c b/tester/quality_reporting_tester.c index d4e0b3df3..1810b058d 100644 --- a/tester/quality_reporting_tester.c +++ b/tester/quality_reporting_tester.c @@ -430,8 +430,10 @@ test_t quality_reporting_tests[] = { { "Call term session report invalid if missing mandatory fields", quality_reporting_invalid_report}, { "Call term session report sent if call ended normally", quality_reporting_at_call_termination}, { "Interval report if interval is configured", quality_reporting_interval_report}, + #ifdef VIDEO_ENABLED { "Interval report if interval is configured with video and realtime text", quality_reporting_interval_report_video_and_rtt}, { "Session report sent if video stopped during call", quality_reporting_session_report_if_video_stopped}, + #endif { "Sent using custom route", quality_reporting_sent_using_custom_route}, }; From f99fe0ced506dd6588dae8cdbf7b624e6f2f999c Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Fri, 27 Nov 2015 11:13:35 +0100 Subject: [PATCH 09/18] update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 7f3545941..f8b158d8f 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 7f354594173d11cf30eb5cee470c41966d13fe99 +Subproject commit f8b158d8f50005c34cd5445936eede822571f37f From f68cf75d749df061cb5753c3ee13c7dec3aa9c5f Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Fri, 27 Nov 2015 15:48:18 +0100 Subject: [PATCH 10/18] submodules: update mediastreamer2 to fix iOS build --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index f8b158d8f..d1e6c619f 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit f8b158d8f50005c34cd5445936eede822571f37f +Subproject commit d1e6c619f0b94c71f669a574f13706fe330360f9 From 19226b3512e2637f3462591e35476416a197459b Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Fri, 27 Nov 2015 16:20:35 +0100 Subject: [PATCH 11/18] linphonecore.c: fix typo in linphone_reason_to_string --- coreapi/linphonecore.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 38da0256e..d4a0eb7e8 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -1609,7 +1609,7 @@ static void linphone_core_register_default_codecs(LinphoneCore *lc){ linphone_core_register_payload_type(lc,&payload_type_speex_nb,"vbr=on",TRUE); linphone_core_register_payload_type(lc,&payload_type_pcmu8000,NULL,TRUE); linphone_core_register_payload_type(lc,&payload_type_pcma8000,NULL,TRUE); - + /* Text codecs in order or preference (RED first (more robust), then T140) */ linphone_core_register_payload_type(lc, &payload_type_t140_red, NULL, TRUE); linphone_core_register_payload_type(lc, &payload_type_t140, NULL, TRUE); @@ -2576,7 +2576,7 @@ void linphone_core_iterate(LinphoneCore *lc){ lc->prevtime_ms = curtime_ms; }else{ lc->prevtime_ms += 1000; - + } } @@ -6732,7 +6732,7 @@ const char *linphone_reason_to_string(LinphoneReason err){ case LinphoneReasonIOError: return "IO error"; case LinphoneReasonDoNotDisturb: - return "Do not distrub"; + return "Do not disturb"; case LinphoneReasonUnauthorized: return "Unauthorized"; case LinphoneReasonNotAcceptable: From 590f6221a2be3044d25154e9ce29fb1e61b5cadf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grisez?= Date: Mon, 30 Nov 2015 17:57:25 +0100 Subject: [PATCH 12/18] Update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index d1e6c619f..265a80c0d 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit d1e6c619f0b94c71f669a574f13706fe330360f9 +Subproject commit 265a80c0d1db4e7b7c81144370e7b9501633825d From 27ba2d4f4da3ecca24663e44723e80a5c2ae5f64 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 1 Dec 2015 09:39:28 +0100 Subject: [PATCH 13/18] update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 265a80c0d..4b05619fe 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 265a80c0d1db4e7b7c81144370e7b9501633825d +Subproject commit 4b05619fec78b1347ded02c25ebd04261ecbe630 From edb46b3db004b33fd3de14498c2042a2dddb3313 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 1 Dec 2015 09:44:32 +0100 Subject: [PATCH 14/18] update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 4b05619fe..9d2b32996 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 4b05619fec78b1347ded02c25ebd04261ecbe630 +Subproject commit 9d2b3299604be5ada1185ec7c5e1e126547a4c5a From 6a70c5c257a02ce170cc0385c87d3e98eec94c81 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 1 Dec 2015 10:28:09 +0100 Subject: [PATCH 15/18] update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 9d2b32996..3eddc8196 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 9d2b3299604be5ada1185ec7c5e1e126547a4c5a +Subproject commit 3eddc8196d1d3a23ca934515764a178649d63043 From 8c0d155fc752ccf527d4fece1bdd76421e8233d3 Mon Sep 17 00:00:00 2001 From: Gautier Pelloux-Prayer Date: Tue, 1 Dec 2015 16:10:05 +0100 Subject: [PATCH 16/18] message_tester.c: add "Lime text message to non lime" test --- tester/message_tester.c | 58 ++++++++++++++++++++++++++++++++--------- 1 file changed, 45 insertions(+), 13 deletions(-) diff --git a/tester/message_tester.c b/tester/message_tester.c index 46c0de0f5..2b6e69aba 100644 --- a/tester/message_tester.c +++ b/tester/message_tester.c @@ -96,7 +96,7 @@ LinphoneBuffer * tester_file_transfer_send(LinphoneChatMessage *msg, const Linph size_t size_to_send; uint8_t *buf; FILE *file_to_send = linphone_chat_message_get_user_data(msg); - + BC_ASSERT_PTR_NOT_NULL(file_to_send); if (file_to_send == NULL){ return NULL; @@ -802,6 +802,37 @@ static void lime_text_message(void) { linphone_core_manager_destroy(pauline); } +static void lime_text_message_to_non_lime(void) { + FILE *ZIDCachePaulineFD; + LinphoneChatRoom* chat_room; + char* filepath; + LinphoneCoreManager* marie = linphone_core_manager_new("marie_rc"); + LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_tcp_rc"); + + /* make sure lime is enabled */ + linphone_core_enable_lime(marie->lc, 0); + linphone_core_enable_lime(pauline->lc, 1); + + /* set the zid caches files : create two ZID cache from this valid one inserting the auto-generated sip URI for the peer account as keys in ZID cache are indexed by peer sip uri */ + ZIDCachePaulineFD = fopen_from_write_dir("tmpZIDCachePauline.xml", "w"); + fprintf(ZIDCachePaulineFD, "\n005dbe0399643d953a2202ddef7692d0792a67491ae2d44e9b5c8f06f3b6c2c695f2dfc3c26f31f5fef8661f8c5fe7c95aeb5c5b0435b045f8324dd18ea905171ec2be89f879d01d5994132048d92ea020778cbdf31c605e2fdcef69380937c2cf221f7d11526f286c39f49641452ba9012521c705094899%s08df5907d30959b8cb70f6fff2d8febd88fb41b0c8afc39e4b972f86dd5cfe2d60f020a3fe11dc2cc0e1e8ed9341b4cd14944db806ca4fc95456bbe45d95c43a5f9aa1e5e4c7ec88fa389a9f6b8879b42d3c57bb28e62068d2df23e8f9b77193bcffd51e7316a6c6f53a50fcf01b01bf2d3c57bb28e62068d2df23e8f9b7719300000078000001cf011234567889643d953a2202ee9b5c8f06f3b6c2c695f2dfc3c26f31f5fef8661f8c5fe7c95aeb5c5b0435b045f8324dd18ea905171ec2be89f879d01d5994132048d92ea020778cbdf31c605e2fdcef69380937c2cf221f7d11526f286c39f49641452ba9012521c705094899%s81e6e6362c34dc974263d1f77cbb9a8d6d6a718330994379099a8fa19fb12faa25d9ac653a83c4559cb0ae7394e7cd3b2d3c57bb28e62068d2df23e8f9b77193f69aa1e5e4c7ec88fa389a9f6b8879b42d3c57bb28e62068d2df23e8f9b7719322ffd51e7316a6c6f53a50fcf01b01bf2d3c57bb28e62068d2df23e8f9b771930000002e0000000001", linphone_address_as_string_uri_only(marie->identity), linphone_address_as_string_uri_only(marie->identity)); + fclose(ZIDCachePaulineFD); + + filepath = bc_tester_file("tmpZIDCachePauline.xml"); + linphone_core_set_zrtp_secrets_file(pauline->lc, filepath); + ms_free(filepath); + + chat_room = linphone_core_get_chat_room(pauline->lc, marie->identity); + + linphone_chat_room_send_message(chat_room,"Bla bla bla bla"); + //since we cannot decrypt message, we should not receive any message + BC_ASSERT_FALSE(wait_for(pauline->lc,marie->lc,&marie->stat.number_of_LinphoneMessageReceived,1)); + BC_ASSERT_EQUAL(marie->stat.number_of_LinphoneMessageReceivedLegacy,0, int, "%d"); + + BC_ASSERT_PTR_NOT_NULL(linphone_core_get_chat_room(marie->lc,pauline->identity)); + linphone_core_manager_destroy(marie); + linphone_core_manager_destroy(pauline); +} void lime_transfer_message_base(bool_t encrypt_file) { FILE *ZIDCacheMarieFD, *ZIDCachePaulineFD; LinphoneCoreManager *marie, *pauline; @@ -1295,7 +1326,7 @@ static void real_time_text(bool_t audio_stream_enabled, bool_t srtp_enabled, boo LinphoneCoreManager* pauline = linphone_core_manager_new( "pauline_tcp_rc"); LinphoneCallParams *marie_params = NULL; LinphoneCall *pauline_call, *marie_call; - + if (mess_with_marie_payload_number) { MSList *elem; for (elem = marie->lc->codecs_conf.text_codecs; elem != NULL; elem = elem->next) { @@ -1315,12 +1346,12 @@ static void real_time_text(bool_t audio_stream_enabled, bool_t srtp_enabled, boo } } } - + if (ice_enabled) { linphone_core_set_firewall_policy(marie->lc, LinphonePolicyUseIce); linphone_core_set_firewall_policy(pauline->lc, LinphonePolicyUseIce); } - + if (srtp_enabled) { BC_ASSERT_TRUE(linphone_core_media_encryption_supported(marie->lc, LinphoneMediaEncryptionSRTP)); linphone_core_set_media_encryption(marie->lc, LinphoneMediaEncryptionSRTP); @@ -1336,7 +1367,7 @@ static void real_time_text(bool_t audio_stream_enabled, bool_t srtp_enabled, boo linphone_core_set_nortp_timeout(marie->lc, 10); linphone_core_set_nortp_timeout(pauline->lc, 10); } - + BC_ASSERT_TRUE(call_with_caller_params(marie, pauline, marie_params)); pauline_call = linphone_core_get_current_call(pauline->lc); marie_call = linphone_core_get_current_call(marie->lc); @@ -1353,7 +1384,7 @@ static void real_time_text(bool_t audio_stream_enabled, bool_t srtp_enabled, boo int i; LinphoneChatMessage* rtt_message = linphone_chat_room_create_message(pauline_chat_room,NULL); LinphoneChatRoom *marie_chat_room = linphone_call_get_chat_room(marie_call); - + for (i = 0; i < strlen(message); i++) { linphone_chat_message_put_char(rtt_message, message[i]); BC_ASSERT_TRUE(wait_for_until(pauline->lc, marie->lc, &marie->stat.number_of_LinphoneIsComposingActiveReceived, i+1, 1000)); @@ -1369,7 +1400,7 @@ static void real_time_text(bool_t audio_stream_enabled, bool_t srtp_enabled, boo BC_ASSERT_FALSE(marie->stat.number_of_LinphoneCallEnd > 0); BC_ASSERT_FALSE(pauline->stat.number_of_LinphoneCallEnd > 0); } - + if (ice_enabled) { BC_ASSERT_TRUE(check_ice(pauline,marie,LinphoneIceStateHostConnection)); } @@ -1505,7 +1536,7 @@ static void real_time_text_message_compat(bool_t end_with_crlf, bool_t end_with_ marie_params = linphone_core_create_call_params(marie->lc, NULL); linphone_call_params_enable_realtime_text(marie_params,TRUE); - + BC_ASSERT_TRUE(call_with_caller_params(marie, pauline, marie_params)); pauline_call=linphone_core_get_current_call(pauline->lc); marie_call=linphone_core_get_current_call(marie->lc); @@ -1527,7 +1558,7 @@ static void real_time_text_message_compat(bool_t end_with_crlf, bool_t end_with_ BC_ASSERT_TRUE(wait_for_until(pauline->lc, marie->lc, &marie->stat.number_of_LinphoneIsComposingActiveReceived, i+1, 1000)); BC_ASSERT_EQUAL(linphone_chat_room_get_char(marie_chat_room), message[i], char, "%c"); } - + if (end_with_crlf) { linphone_chat_message_put_char(rtt_message, crlf); } else if (end_with_lf) { @@ -1560,7 +1591,7 @@ static void real_time_text_message_accented_chars(void) { marie_params = linphone_core_create_call_params(marie->lc, NULL); linphone_call_params_enable_realtime_text(marie_params,TRUE); - + BC_ASSERT_TRUE(call_with_caller_params(marie, pauline, marie_params)); pauline_call=linphone_core_get_current_call(pauline->lc); marie_call=linphone_core_get_current_call(marie->lc); @@ -1589,7 +1620,7 @@ static void real_time_text_message_accented_chars(void) { BC_ASSERT_TRUE(wait_for_until(pauline->lc, marie->lc, &marie->stat.number_of_LinphoneIsComposingActiveReceived, i+1, 1000)); BC_ASSERT_EQUAL(linphone_chat_room_get_char(marie_chat_room), message[i], unsigned long, "%lu"); } - + linphone_chat_room_send_chat_message(pauline_chat_room, rtt_message); BC_ASSERT_TRUE(wait_for(pauline->lc, marie->lc, &marie->stat.number_of_LinphoneMessageReceived, 1)); BC_ASSERT_EQUAL(strcmp(marie->stat.last_received_chat_message->message, "ãæçéîøùÿ"), 0, int, "%i"); @@ -1618,7 +1649,7 @@ static void real_time_text_copy_paste(void) { marie_params = linphone_core_create_call_params(marie->lc, NULL); linphone_call_params_enable_realtime_text(marie_params,TRUE); - + BC_ASSERT_TRUE(call_with_caller_params(marie, pauline, marie_params)); pauline_call = linphone_core_get_current_call(pauline->lc); marie_call = linphone_core_get_current_call(marie->lc); @@ -1632,7 +1663,7 @@ static void real_time_text_copy_paste(void) { int i; LinphoneChatMessage* rtt_message = linphone_chat_room_create_message(pauline_chat_room,NULL); LinphoneChatRoom *marie_chat_room = linphone_call_get_chat_room(marie_call); - + for (i = 1; i <= strlen(message); i++) { linphone_chat_message_put_char(rtt_message, message[i-1]); if (i % 4 == 0) { @@ -1688,6 +1719,7 @@ test_t message_tests[] = { {"IsComposing notification", is_composing_notification}, #ifdef HAVE_LIME {"Lime text message", lime_text_message}, + {"Lime text message to non lime", lime_text_message_to_non_lime}, {"Lime transfer message", lime_transfer_message}, {"Lime transfer message without encryption", lime_transfer_message_without_encryption}, {"Lime unitary", lime_unit}, From 62ee553c10404483f9047a26e29dadd054fbcba7 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Wed, 2 Dec 2015 10:39:17 +0100 Subject: [PATCH 17/18] fix make distcheck --- mediastreamer2 | 2 +- po/POTFILES.skip | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 3eddc8196..9d2b32996 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 3eddc8196d1d3a23ca934515764a178649d63043 +Subproject commit 9d2b3299604be5ada1185ec7c5e1e126547a4c5a diff --git a/po/POTFILES.skip b/po/POTFILES.skip index 32dcd19f2..c85434453 100755 --- a/po/POTFILES.skip +++ b/po/POTFILES.skip @@ -10,6 +10,7 @@ mediastreamer2/src/audiofilters/dtmfgen.c mediastreamer2/src/audiofilters/equalizer.c mediastreamer2/src/audiofilters/gsm.c mediastreamer2/src/audiofilters/genericplc.c +mediastreamer2/src/audiofilters/msgenericplc.c mediastreamer2/src/audiofilters/macsnd.c mediastreamer2/src/audiofilters/msconf.c mediastreamer2/src/audiofilters/msfileplayer.c From 8eb817185562570698faae2cedf184b6f9f8f9a9 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Wed, 2 Dec 2015 10:45:23 +0100 Subject: [PATCH 18/18] update ms2 --- mediastreamer2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediastreamer2 b/mediastreamer2 index 9d2b32996..3eddc8196 160000 --- a/mediastreamer2 +++ b/mediastreamer2 @@ -1 +1 @@ -Subproject commit 9d2b3299604be5ada1185ec7c5e1e126547a4c5a +Subproject commit 3eddc8196d1d3a23ca934515764a178649d63043