diff --git a/CHANGELOG.md b/CHANGELOG.md index c2f2f64d072..a77bd7ee0e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 2.14.2 (January 2020) +- Fix crash triggered when trying to connect to server secured with self signed certificate + ## 2.14.1 (December 2019) - Some improvements in wizard diff --git a/owncloud-android-library b/owncloud-android-library index 4cd317d929a..6df51cc3233 160000 --- a/owncloud-android-library +++ b/owncloud-android-library @@ -1 +1 @@ -Subproject commit 4cd317d929af90034370e5183cd6322ee64435af +Subproject commit 6df51cc32332268cda98c6a54a0177baebeca4de diff --git a/owncloudApp/build.gradle b/owncloudApp/build.gradle index e1bc7e562cb..2ad33dd533d 100644 --- a/owncloudApp/build.gradle +++ b/owncloudApp/build.gradle @@ -104,8 +104,8 @@ android { testInstrumentationRunner "com.owncloud.android.utils.OCTestAndroidJUnitRunner" - versionCode = 21400100 - versionName = "2.14.1" + versionCode = 21400200 + versionName = "2.14.2" buildConfigField "String", gitRemote, "\"" + getGitOriginRemote() + "\"" buildConfigField "String", commitSHA1, "\"" + getLatestGitHash() + "\"" diff --git a/owncloudApp/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java b/owncloudApp/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java index 29f5358288e..e6e4161e42e 100644 --- a/owncloudApp/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java +++ b/owncloudApp/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java @@ -115,7 +115,7 @@ */ public class AuthenticatorActivity extends AccountAuthenticatorActivity implements OnRemoteOperationListener, OnFocusChangeListener, OnEditorActionListener, - AuthenticatorAsyncTask.OnAuthenticatorTaskListener { + AuthenticatorAsyncTask.OnAuthenticatorTaskListener, SslUntrustedCertDialog.OnSslUntrustedCertListener { public static final String EXTRA_ACTION = "ACTION"; public static final String EXTRA_ACCOUNT = "ACCOUNT"; @@ -1689,6 +1689,23 @@ public boolean onEditorAction(TextView inputField, int actionId, KeyEvent event) return false; // always return false to grant that the software keyboard is hidden anyway } + @Override + public void onSavedCertificate() { + Timber.d("Server certificate is trusted"); + checkOcServer(); + } + + @Override + public void onFailedSavingCertificate() { + Timber.d("Server certificate could not be saved"); + Toast.makeText(this, R.string.ssl_validator_not_saved, Toast.LENGTH_LONG).show(); + } + + @Override + public void onCancelCertificate() { + Timber.d("Server certificate is not trusted"); + } + private abstract static class RightDrawableOnTouchListener implements OnTouchListener { /** diff --git a/owncloudApp/src/main/java/com/owncloud/android/services/OperationsService.java b/owncloudApp/src/main/java/com/owncloud/android/services/OperationsService.java index 77163abcb2b..1b5a0278bf3 100644 --- a/owncloudApp/src/main/java/com/owncloud/android/services/OperationsService.java +++ b/owncloudApp/src/main/java/com/owncloud/android/services/OperationsService.java @@ -204,10 +204,8 @@ public void onDestroy() { saveAllClients(this, MainApp.Companion.getAccountType()); // TODO - get rid of these exceptions - } catch ( - AccountNotFoundException | AuthenticatorException | - OperationCanceledException | IOException e) { - e.printStackTrace(); + } catch (AccountNotFoundException | AuthenticatorException | OperationCanceledException | IOException e) { + Timber.e(e); } mUndispatchedFinishedOperations.clear(); diff --git a/owncloudApp/src/main/java/com/owncloud/android/services/SyncFolderHandler.java b/owncloudApp/src/main/java/com/owncloud/android/services/SyncFolderHandler.java index d0f41679766..a88e9ea5c1e 100644 --- a/owncloudApp/src/main/java/com/owncloud/android/services/SyncFolderHandler.java +++ b/owncloudApp/src/main/java/com/owncloud/android/services/SyncFolderHandler.java @@ -128,7 +128,7 @@ private void doOperation(Account account, String remotePath) { mService.dispatchResultToOperationListeners(mCurrentSyncOperation, result); - sendBroadcastFinishedSyncFolder(account, remotePath, result.isSuccess()); + sendBroadcastFinishedSyncFolder(account, remotePath, result != null && result.isSuccess()); } } }