From ebd5f8beb044c91d149bd2d3b33dc33dcd1cc80b Mon Sep 17 00:00:00 2001 From: Benjamin Reis Date: Tue, 26 Sep 2017 15:35:18 +0200 Subject: [PATCH 01/12] display missed calls as so --- submodules/cmake-builder | 2 +- submodules/linphone | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/submodules/cmake-builder b/submodules/cmake-builder index 404cd8694..f12eea15b 160000 --- a/submodules/cmake-builder +++ b/submodules/cmake-builder @@ -1 +1 @@ -Subproject commit 404cd869464fa591c2a11fb91242c2983f73270f +Subproject commit f12eea15b7d3572226dc61485e4df86f5f9674f7 diff --git a/submodules/linphone b/submodules/linphone index 07845c193..34f2e9423 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 07845c193914bdbaddf1e6f85fbb0bda5ebadd55 +Subproject commit 34f2e94230d1fcd3371ba26fb6c39f8fb328eee7 From 2188db30908c5037603c176b27975cc5aa0a5fdf Mon Sep 17 00:00:00 2001 From: Benjamin Reis Date: Tue, 26 Sep 2017 16:04:51 +0200 Subject: [PATCH 02/12] update linphone --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 34f2e9423..10d2a21d0 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 34f2e94230d1fcd3371ba26fb6c39f8fb328eee7 +Subproject commit 10d2a21d0c0994d371231fa7362d0d49130a997b From cd67dc91f9da300301111449921f1ef5bb1226a9 Mon Sep 17 00:00:00 2001 From: Benjamin Reis Date: Tue, 26 Sep 2017 17:04:56 +0200 Subject: [PATCH 03/12] add soci libxsd and xerces --- submodules/externals/libxsd | 1 + submodules/externals/soci | 1 + submodules/externals/xerces-c | 1 + 3 files changed, 3 insertions(+) create mode 160000 submodules/externals/libxsd create mode 160000 submodules/externals/soci create mode 160000 submodules/externals/xerces-c diff --git a/submodules/externals/libxsd b/submodules/externals/libxsd new file mode 160000 index 000000000..97dfa5b7a --- /dev/null +++ b/submodules/externals/libxsd @@ -0,0 +1 @@ +Subproject commit 97dfa5b7af486a2730aa66ef4b2b04259c9ab21b diff --git a/submodules/externals/soci b/submodules/externals/soci new file mode 160000 index 000000000..908c7eb8f --- /dev/null +++ b/submodules/externals/soci @@ -0,0 +1 @@ +Subproject commit 908c7eb8f421601e6eb7b77e1131a35bcbe374fa diff --git a/submodules/externals/xerces-c b/submodules/externals/xerces-c new file mode 160000 index 000000000..9c15b9917 --- /dev/null +++ b/submodules/externals/xerces-c @@ -0,0 +1 @@ +Subproject commit 9c15b9917507c584eadace89636b91af27b59b9c From fb09e8cd571c008be2855405a4326ea2b676dc5c Mon Sep 17 00:00:00 2001 From: Benjamin Reis Date: Tue, 26 Sep 2017 17:07:19 +0200 Subject: [PATCH 04/12] .gitmodules --- .gitmodules | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.gitmodules b/.gitmodules index d4527eeb8..1adc1677e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -111,3 +111,12 @@ [submodule "submodules/bcmatroska2"] path = submodules/bcmatroska2 url = git://git.linphone.org/bcmatroska2.git +[submodule "submodules/externals/soci"] + path = submodules/externals/soci + url = git://git.linphone.org/soci +[submodule "submodules/externals/xerces-c"] + path = submodules/externals/xerces-c + url = git://git.linphone.org/xerces-c +[submodule "submodules/externals/libxsd"] + path = submodules/externals/libxsd + url = git://git.linphone.org/libxsd From aa9a2d4c865dc9bbb39c3a5caa3202fc149308fe Mon Sep 17 00:00:00 2001 From: Benjamin Reis Date: Wed, 27 Sep 2017 14:42:01 +0200 Subject: [PATCH 05/12] update linphone --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 10d2a21d0..63095a301 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 10d2a21d0c0994d371231fa7362d0d49130a997b +Subproject commit 63095a3016cd79ca10a927cf060e1d6a000d6b4d From 7cb9e5621dc132747dd80d55f272ad91813d5b96 Mon Sep 17 00:00:00 2001 From: Benjamin Reis Date: Wed, 27 Sep 2017 15:56:11 +0200 Subject: [PATCH 06/12] update cmake builder --- submodules/cmake-builder | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/cmake-builder b/submodules/cmake-builder index f12eea15b..99773d23d 160000 --- a/submodules/cmake-builder +++ b/submodules/cmake-builder @@ -1 +1 @@ -Subproject commit f12eea15b7d3572226dc61485e4df86f5f9674f7 +Subproject commit 99773d23d71b78c75a8b2eb7ec91e7c3a69777f5 From 47343025a3f17a514a7b43f8ca54af2f244bc555 Mon Sep 17 00:00:00 2001 From: Benjamin Reis Date: Wed, 27 Sep 2017 17:36:12 +0200 Subject: [PATCH 07/12] add 1024px icon --- .../AppIcon.appiconset/Contents.json | 3 ++- .../AppIcon.appiconset/linphone_icon_1024.png | Bin 0 -> 32913 bytes linphone-Info.plist | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 Resources/Images.xcassets/AppIcon.appiconset/linphone_icon_1024.png diff --git a/Resources/Images.xcassets/AppIcon.appiconset/Contents.json b/Resources/Images.xcassets/AppIcon.appiconset/Contents.json index 8a8659e60..9a8a814a4 100644 --- a/Resources/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/Resources/Images.xcassets/AppIcon.appiconset/Contents.json @@ -129,8 +129,9 @@ "scale" : "2x" }, { - "idiom" : "ios-marketing", "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "linphone_icon_1024.png", "scale" : "1x" } ], diff --git a/Resources/Images.xcassets/AppIcon.appiconset/linphone_icon_1024.png b/Resources/Images.xcassets/AppIcon.appiconset/linphone_icon_1024.png new file mode 100644 index 0000000000000000000000000000000000000000..d3c00f9f6f1232c8e7ca4311808111d6a00d19e6 GIT binary patch literal 32913 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 literal 0 HcmV?d00001 diff --git a/linphone-Info.plist b/linphone-Info.plist index ea003511e..630b626a0 100644 --- a/linphone-Info.plist +++ b/linphone-Info.plist @@ -53,7 +53,7 @@ CFBundleVersion - 2 + 3 ITSAppUsesNonExemptEncryption ITSEncryptionExportComplianceCode From ee9585d722614e948de60b7fabf920854515fc34 Mon Sep 17 00:00:00 2001 From: Benjamin Reis Date: Thu, 28 Sep 2017 15:29:02 +0200 Subject: [PATCH 08/12] remove deprecated call to linphone_core_new(...) --- Classes/LinphoneManager.m | 65 +++++++++++++++++++++------------------ submodules/linphone | 2 +- 2 files changed, 36 insertions(+), 31 deletions(-) diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index e08f76863..2debfe0a2 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -36,6 +36,7 @@ #import "Utils/AudioHelper.h" #import "Utils/FileTransferDelegate.h" +#include "linphone/factory.h" #include "linphone/linphonecore_utils.h" #include "linphone/lpconfig.h" #include "mediastreamer2/mscommon.h" @@ -610,7 +611,7 @@ static void linphone_iphone_log_user_warning(struct _LinphoneCore *lc, const cha static void linphone_iphone_display_status(struct _LinphoneCore *lc, const char *message) { NSString *status = [[NSString alloc] initWithCString:message encoding:[NSString defaultCStringEncoding]]; - [(__bridge LinphoneManager *)linphone_core_get_user_data(lc) displayStatus:status]; + [(__bridge LinphoneManager *)linphone_core_cbs_get_user_data(linphone_core_get_current_callbacks(lc)) displayStatus:status]; } #pragma mark - Call State Functions @@ -985,7 +986,7 @@ static void linphone_iphone_display_status(struct _LinphoneCore *lc, const char static void linphone_iphone_call_state(LinphoneCore *lc, LinphoneCall *call, LinphoneCallState state, const char *message) { - [(__bridge LinphoneManager *)linphone_core_get_user_data(lc) onCall:call StateChanged:state withMessage:message]; + [(__bridge LinphoneManager *)linphone_core_cbs_get_user_data(linphone_core_get_current_callbacks(lc)) onCall:call StateChanged:state withMessage:message]; } #pragma mark - Transfert State Functions @@ -996,7 +997,7 @@ static void linphone_iphone_transfer_state_changed(LinphoneCore *lc, LinphoneCal #pragma mark - Global state change static void linphone_iphone_global_state_changed(LinphoneCore *lc, LinphoneGlobalState gstate, const char *message) { - [(__bridge LinphoneManager *)linphone_core_get_user_data(lc) onGlobalStateChanged:gstate withMessage:message]; + [(__bridge LinphoneManager *)linphone_core_cbs_get_user_data(linphone_core_get_current_callbacks(lc)) onGlobalStateChanged:gstate withMessage:message]; } - (void)onGlobalStateChanged:(LinphoneGlobalState)state withMessage:(const char *)message { @@ -1022,7 +1023,7 @@ static void linphone_iphone_global_state_changed(LinphoneCore *lc, LinphoneGloba static void linphone_iphone_configuring_status_changed(LinphoneCore *lc, LinphoneConfiguringState status, const char *message) { - [(__bridge LinphoneManager *)linphone_core_get_user_data(lc) onConfiguringStatusChanged:status withMessage:message]; + [(__bridge LinphoneManager *)linphone_core_cbs_get_user_data(linphone_core_get_current_callbacks(lc)) onConfiguringStatusChanged:status withMessage:message]; } - (void)onConfiguringStatusChanged:(LinphoneConfiguringState)status withMessage:(const char *)message { @@ -1127,15 +1128,17 @@ static void linphone_iphone_configuring_status_changed(LinphoneCore *lc, Linphon static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyConfig *cfg, LinphoneRegistrationState state, const char *message) { - [(__bridge LinphoneManager *)linphone_core_get_user_data(lc) onRegister:lc cfg:cfg state:state message:message]; + [(__bridge LinphoneManager *)linphone_core_cbs_get_user_data(linphone_core_get_current_callbacks(lc)) onRegister:lc cfg:cfg state:state message:message]; } #pragma mark - Auth info Function -static void linphone_iphone_popup_password_request(LinphoneCore *lc, const char *realmC, const char *usernameC, - const char *domainC) { +static void linphone_iphone_popup_password_request(LinphoneCore *lc, LinphoneAuthInfo *auth_info, LinphoneAuthMethod method) { // let the wizard handle its own errors if ([PhoneMainView.instance currentView] != AssistantView.compositeViewDescription) { + const char * realmC = linphone_auth_info_get_realm(auth_info); + const char * usernameC = linphone_auth_info_get_username(auth_info); + const char * domainC = linphone_auth_info_get_domain(auth_info); static UIAlertController *alertView = nil; // avoid having multiple popups @@ -1370,7 +1373,7 @@ static void linphone_iphone_popup_password_request(LinphoneCore *lc, const char } static void linphone_iphone_message_received(LinphoneCore *lc, LinphoneChatRoom *room, LinphoneChatMessage *message) { - [(__bridge LinphoneManager *)linphone_core_get_user_data(lc) onMessageReceived:lc room:room message:message]; + [(__bridge LinphoneManager *)linphone_core_cbs_get_user_data(linphone_core_get_current_callbacks(lc)) onMessageReceived:lc room:room message:message]; } static void linphone_iphone_message_received_unable_decrypt(LinphoneCore *lc, LinphoneChatRoom *room, @@ -1465,7 +1468,7 @@ static void linphone_iphone_message_received_unable_decrypt(LinphoneCore *lc, Li static void linphone_iphone_notify_received(LinphoneCore *lc, LinphoneEvent *lev, const char *notified_event, const LinphoneContent *body) { - [(__bridge LinphoneManager *)linphone_core_get_user_data(lc) onNotifyReceived:lc + [(__bridge LinphoneManager *)linphone_core_cbs_get_user_data(linphone_core_get_current_callbacks(lc)) onNotifyReceived:lc event:lev notifyEvent:notified_event content:body]; @@ -1488,7 +1491,7 @@ static void linphone_iphone_notify_received(LinphoneCore *lc, LinphoneEvent *lev static void linphone_iphone_notify_presence_received_for_uri_or_tel(LinphoneCore *lc, LinphoneFriend *lf, const char *uri_or_tel, const LinphonePresenceModel *presence_model) { - [(__bridge LinphoneManager *)linphone_core_get_user_data(lc) onNotifyPresenceReceivedForUriOrTel:lc + [(__bridge LinphoneManager *)linphone_core_cbs_get_user_data(linphone_core_get_current_callbacks(lc)) onNotifyPresenceReceivedForUriOrTel:lc friend:lf uri:uri_or_tel presenceModel:presence_model]; @@ -1496,7 +1499,7 @@ static void linphone_iphone_notify_presence_received_for_uri_or_tel(LinphoneCore static void linphone_iphone_call_encryption_changed(LinphoneCore *lc, LinphoneCall *call, bool_t on, const char *authentication_token) { - [(__bridge LinphoneManager *)linphone_core_get_user_data(lc) onCallEncryptionChanged:lc + [(__bridge LinphoneManager *)linphone_core_cbs_get_user_data(linphone_core_get_current_callbacks(lc)) onCallEncryptionChanged:lc call:call on:on token:authentication_token]; @@ -1580,7 +1583,7 @@ static void linphone_iphone_call_encryption_changed(LinphoneCore *lc, LinphoneCa } static void linphone_iphone_is_composing_received(LinphoneCore *lc, LinphoneChatRoom *room) { - [(__bridge LinphoneManager *)linphone_core_get_user_data(lc) onMessageComposeReceived:lc forRoom:room]; + [(__bridge LinphoneManager *)linphone_core_cbs_get_user_data(linphone_core_get_current_callbacks(lc)) onMessageComposeReceived:lc forRoom:room]; } #pragma mark - Network Functions @@ -1834,23 +1837,6 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach } } -#pragma mark - VTable - -static LinphoneCoreVTable linphonec_vtable = { - .call_state_changed = (LinphoneCoreCallStateChangedCb)linphone_iphone_call_state, - .registration_state_changed = linphone_iphone_registration_state, - .notify_presence_received_for_uri_or_tel = linphone_iphone_notify_presence_received_for_uri_or_tel, - .auth_info_requested = linphone_iphone_popup_password_request, - .message_received = linphone_iphone_message_received, - .message_received_unable_decrypt = linphone_iphone_message_received_unable_decrypt, - .transfer_state_changed = linphone_iphone_transfer_state_changed, - .is_composing_received = linphone_iphone_is_composing_received, - .configuring_status = linphone_iphone_configuring_status_changed, - .global_state_changed = linphone_iphone_global_state_changed, - .notify_received = linphone_iphone_notify_received, - .call_encryption_changed = linphone_iphone_call_encryption_changed, -}; - #pragma mark - // scheduling loop @@ -2082,7 +2068,26 @@ void popup_link_account_cb(LinphoneAccountCreator *creator, LinphoneAccountCreat [self lpConfigSetString:[LinphoneManager bundleFile:ringback] forKey:@"remote_ring" inSection:@"sound"]; [self lpConfigSetString:[LinphoneManager bundleFile:hold] forKey:@"hold_music" inSection:@"sound"]; - theLinphoneCore = linphone_core_new_with_config(&linphonec_vtable, _configDb, (__bridge void *)(self)); + LinphoneFactory *factory = linphone_factory_get(); + LinphoneCoreCbs *cbs = linphone_factory_create_core_cbs(factory); + linphone_core_cbs_set_call_state_changed(cbs, linphone_iphone_call_state); + linphone_core_cbs_set_registration_state_changed(cbs,linphone_iphone_registration_state); + linphone_core_cbs_set_notify_presence_received_for_uri_or_tel(cbs, linphone_iphone_notify_presence_received_for_uri_or_tel); + linphone_core_cbs_set_authentication_requested(cbs, linphone_iphone_popup_password_request); + linphone_core_cbs_set_message_received(cbs, linphone_iphone_message_received); + linphone_core_cbs_set_message_received_unable_decrypt(cbs, linphone_iphone_message_received_unable_decrypt); + linphone_core_cbs_set_transfer_state_changed(cbs, linphone_iphone_transfer_state_changed); + linphone_core_cbs_set_is_composing_received(cbs, linphone_iphone_is_composing_received); + linphone_core_cbs_set_configuring_status(cbs, linphone_iphone_configuring_status_changed); + linphone_core_cbs_set_global_state_changed(cbs, linphone_iphone_global_state_changed); + linphone_core_cbs_set_notify_received(cbs, linphone_iphone_notify_received); + linphone_core_cbs_set_call_encryption_changed(cbs, linphone_iphone_call_encryption_changed); + linphone_core_cbs_set_user_data(cbs, (__bridge void *)(self)); + + theLinphoneCore = linphone_factory_create_core_with_config(factory, cbs, _configDb); + // Let the core handle cbs + linphone_core_cbs_unref(cbs); + LOGI(@"Create linphonecore %p", theLinphoneCore); // Load plugins if available in the linphone SDK - otherwise these calls will do nothing diff --git a/submodules/linphone b/submodules/linphone index 63095a301..f975012e3 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 63095a3016cd79ca10a927cf060e1d6a000d6b4d +Subproject commit f975012e3c2ef8a1511421a1e2816f33a54e6376 From 6993d8c9c2f09aeeb00c22b733fcd30c098406f9 Mon Sep 17 00:00:00 2001 From: Benjamin Reis Date: Thu, 28 Sep 2017 15:39:26 +0200 Subject: [PATCH 09/12] remove warnings and deprecated calls --- TestsUI/LinphoneTestCase.m | 4 +- linphone.xcodeproj/project.pbxproj | 56 ++++++++++++++++++- .../xcschemes/LinphoneTester.xcscheme | 4 +- .../xcshareddata/xcschemes/linphone.xcscheme | 4 +- 4 files changed, 63 insertions(+), 5 deletions(-) diff --git a/TestsUI/LinphoneTestCase.m b/TestsUI/LinphoneTestCase.m index 667e14afc..ac2bb896e 100644 --- a/TestsUI/LinphoneTestCase.m +++ b/TestsUI/LinphoneTestCase.m @@ -128,7 +128,7 @@ linphone_address_set_transport(testAddr, LinphoneTransportTcp); linphone_address_set_port(testAddr, 0); - LinphoneProxyConfig *testProxy = linphone_proxy_config_new(); + LinphoneProxyConfig *testProxy = linphone_core_create_proxy_config(LC); linphone_proxy_config_set_identity_address(testProxy, testAddr); linphone_proxy_config_set_server_addr(testProxy, [self accountProxyRoute].UTF8String); linphone_proxy_config_set_route(testProxy, [self accountProxyRoute].UTF8String); @@ -145,7 +145,7 @@ [[LinphoneManager instance] configurePushTokenForProxyConfig:testProxy]; linphone_proxy_config_unref(testProxy); - linphone_auth_info_destroy(testAuth); + linphone_auth_info_unref(testAuth); linphone_address_unref(testAddr); linphone_core_set_file_transfer_server(lc, "https://www.linphone.org:444/lft.php"); diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index c615a74c2..825d0dd55 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -828,6 +828,20 @@ remoteGlobalIDString = FAB8A0141CAC546A00C6DFC1; remoteInfo = KIFFrameworkConsumerTests; }; + 8CA26B4F1F7D31E700411264 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 630589F21B4E816900EFAE36 /* KIF.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8CD87D4C1EF5105800ACA260; + remoteInfo = LinphoneManager; + }; + 8CA26B511F7D31E700411264 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 630589F21B4E816900EFAE36 /* KIF.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8CD87D541EF5105900ACA260; + remoteInfo = LinphoneManagerTests; + }; F08F119119C09C6B007D70C2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; @@ -2302,6 +2316,8 @@ 63058A071B4E816A00EFAE36 /* KIF.framework */, 633FC7C81CD7466400774B8B /* KIFFrameworkConsumer.app */, 633FC7CA1CD7466400774B8B /* KIFFrameworkConsumerTests.xctest */, + 8CA26B501F7D31E700411264 /* LinphoneManager.framework */, + 8CA26B521F7D31E700411264 /* LinphoneManagerTests.xctest */, ); name = Products; sourceTree = ""; @@ -3115,7 +3131,7 @@ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0820; + LastUpgradeCheck = 0900; TargetAttributes = { 1D6058900D05DD3D006BFB54 = { DevelopmentTeam = Z2V957B3D6; @@ -3226,6 +3242,20 @@ remoteRef = 633FC7C91CD7466400774B8B /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 8CA26B501F7D31E700411264 /* LinphoneManager.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = LinphoneManager.framework; + remoteRef = 8CA26B4F1F7D31E700411264 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8CA26B521F7D31E700411264 /* LinphoneManagerTests.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = LinphoneManagerTests.xctest; + remoteRef = 8CA26B511F7D31E700411264 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ @@ -4540,12 +4570,18 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -4637,12 +4673,18 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -4734,12 +4776,18 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -4831,12 +4879,18 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; diff --git a/linphone.xcodeproj/xcshareddata/xcschemes/LinphoneTester.xcscheme b/linphone.xcodeproj/xcshareddata/xcschemes/LinphoneTester.xcscheme index 83ffc3fa0..2f5987fbe 100644 --- a/linphone.xcodeproj/xcshareddata/xcschemes/LinphoneTester.xcscheme +++ b/linphone.xcodeproj/xcshareddata/xcschemes/LinphoneTester.xcscheme @@ -1,6 +1,6 @@ Date: Thu, 28 Sep 2017 15:42:07 +0200 Subject: [PATCH 10/12] remove deprecate call to enable_logs_with_callbacks --- Classes/Utils/Log.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Classes/Utils/Log.m b/Classes/Utils/Log.m index 0441d51b5..791d46f92 100644 --- a/Classes/Utils/Log.m +++ b/Classes/Utils/Log.m @@ -61,7 +61,7 @@ stderrInUse = YES; } linphone_core_set_log_collection_path([self cacheDirectory].UTF8String); - linphone_core_enable_logs_with_cb(linphone_iphone_log_handler); + linphone_core_set_log_handler(linphone_iphone_log_handler); linphone_core_enable_log_collection(enabled); if (level == 0) { linphone_core_set_log_level(ORTP_FATAL); From e377c024729b13b6cbd95a9d535b93bd6e0d6eef Mon Sep 17 00:00:00 2001 From: Benjamin Reis Date: Thu, 28 Sep 2017 15:48:12 +0200 Subject: [PATCH 11/12] fix build --- Classes/LinphoneAppDelegate.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 2b15f87e8..afafdb147 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -814,6 +814,8 @@ didInvalidatePushTokenForType:(NSString *)type { } #pragma mark - NSUser notifications +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wstrict-prototypes" - (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier @@ -894,7 +896,7 @@ didInvalidatePushTokenForType:(NSString *)type { } completionHandler(); } - +#pragma clang diagnostic pop #pragma deploymate pop #pragma mark - Remote configuration Functions (URL Handler) From 8432847288664ab29832f099692499c8e1198d32 Mon Sep 17 00:00:00 2001 From: Benjamin Reis Date: Fri, 29 Sep 2017 10:09:45 +0200 Subject: [PATCH 12/12] do not crash after destroying linphone core --- Classes/DialerView.m | 28 +++++++++++++++++++--------- Classes/HistoryDetailsView.m | 12 +++++++++++- Classes/HistoryListTableView.m | 14 ++++++++++++-- 3 files changed, 42 insertions(+), 12 deletions(-) diff --git a/Classes/DialerView.m b/Classes/DialerView.m index 766085646..a22ea7415 100644 --- a/Classes/DialerView.m +++ b/Classes/DialerView.m @@ -192,17 +192,27 @@ static UICompositeViewDescription *compositeDescription = nil; } - (void)coreUpdateEvent:(NSNotification *)notif { - if (IPAD) { - if (linphone_core_video_display_enabled(LC) && linphone_core_video_preview_enabled(LC)) { - linphone_core_set_native_preview_window_id(LC, (__bridge void *)(_videoPreview)); - [_backgroundView setHidden:FALSE]; - [_videoCameraSwitch setHidden:FALSE]; - } else { - linphone_core_set_native_preview_window_id(LC, NULL); - [_backgroundView setHidden:TRUE]; - [_videoCameraSwitch setHidden:TRUE]; + @try { + if (IPAD) { + if (linphone_core_video_display_enabled(LC) && linphone_core_video_preview_enabled(LC)) { + linphone_core_set_native_preview_window_id(LC, (__bridge void *)(_videoPreview)); + [_backgroundView setHidden:FALSE]; + [_videoCameraSwitch setHidden:FALSE]; + } else { + linphone_core_set_native_preview_window_id(LC, NULL); + [_backgroundView setHidden:TRUE]; + [_videoCameraSwitch setHidden:TRUE]; + } } } + @catch (NSException *exception) { + if ([exception.name isEqualToString:@"LinphoneCoreException"]) { + LOGE(@"Core already destroyed"); + return; + } + LOGE(@"Uncaught exception : %@", exception.description); + abort(); + } } #pragma mark - Debug Functions diff --git a/Classes/HistoryDetailsView.m b/Classes/HistoryDetailsView.m index b3360caee..d33dbc4d7 100644 --- a/Classes/HistoryDetailsView.m +++ b/Classes/HistoryDetailsView.m @@ -97,7 +97,17 @@ static UICompositeViewDescription *compositeDescription = nil; #pragma mark - Event Functions - (void)coreUpdateEvent:(NSNotification *)notif { - [self update]; + @try { + [self update]; + } + @catch (NSException *exception) { + if ([exception.name isEqualToString:@"LinphoneCoreException"]) { + LOGE(@"Core already destroyed"); + return; + } + LOGE(@"Uncaught exception : %@", exception.description); + abort(); + } } - (void) deviceOrientationDidChange:(NSNotification*) notif { diff --git a/Classes/HistoryListTableView.m b/Classes/HistoryListTableView.m index 09cf99016..8bb004fe5 100644 --- a/Classes/HistoryListTableView.m +++ b/Classes/HistoryListTableView.m @@ -81,8 +81,18 @@ #pragma mark - Event Functions - (void)coreUpdateEvent:(NSNotification *)notif { - // Invalid all pointers - [self loadData]; + @try { + // Invalid all pointers + [self loadData]; + } + @catch (NSException *exception) { + if ([exception.name isEqualToString:@"LinphoneCoreException"]) { + LOGE(@"Core already destroyed"); + return; + } + LOGE(@"Uncaught exception : %@", exception.description); + abort(); + } } #pragma mark - Property Functions