aboutsummaryrefslogtreecommitdiffstatshomepage
Commit message (Collapse)AuthorAgeFilesLines
...
* gradle: restore play runtime detectionJason A. Donenfeld2023-05-085-41/+19
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: reformat all codeJason A. Donenfeld2023-05-0547-281/+360
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: collect logs from IO thread onlyJason A. Donenfeld2023-05-051-11/+15
| | | | | | | | | | | | | | | | | | | | | Otherwise the pop() from the producer might causes an OOB read in the consumer: Exception java.lang.ArrayIndexOutOfBoundsException: at androidx.collection.CircularArray.get (CircularArray.java) at com.wireguard.android.activity.LogViewerActivity.rawLogBytes (LogViewerActivity.java) at com.wireguard.android.activity.LogViewerActivity.onCreate$lambda$3 (LogViewerActivity.java:133) at android.view.View.performClick (View.java:6935) at android.view.View$PerformClick.run (View.java:26214) at android.os.Handler.handleCallback (Handler.java:790) at android.os.Handler.dispatchMessage (Handler.java:99) at android.os.Looper.loop (Looper.java:164) at android.app.ActivityThread.main (ActivityThread.java:7000) at java.lang.reflect.Method.invoke at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:441) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1408) Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* gradle: use matching fallback instead of build typeJason A. Donenfeld2023-05-052-3/+1
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* version: bump1.0.20230504Jason A. Donenfeld2023-05-041-2/+2
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* strings: sync with crowdinJason A. Donenfeld2023-05-034-11/+40
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* gradle: use += when possibleJason A. Donenfeld2023-05-032-5/+5
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* gradle: don't encourage sticking credentials in filesJason A. Donenfeld2023-05-031-6/+2
| | | | | | | We've only ever used this via environment variables, so keep it that way. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* gradle: reabstract package nameJason A. Donenfeld2023-05-033-9/+14
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* gradle: remove runtime detection of play storeJason A. Donenfeld2023-05-048-30/+56
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* README: account for java version updatesJason A. Donenfeld2023-05-031-3/+3
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* gradle: use newer desugaringJason A. Donenfeld2023-05-031-1/+1
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* gradle: use Java 17Jason A. Donenfeld2023-05-032-5/+5
| | | | | | It appears to work, even on API 21. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* gradle: upgrade Kotlin and AGPHarsh Shandilya2023-05-032-4/+4
| | | | Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* gradle: move JVM target up to 11Harsh Shandilya2023-05-032-5/+5
| | | | | | 1.8 is being deprecated across the board Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* gradle: convert build files to KotlinHarsh Shandilya2023-05-0312-302/+278
| | | | Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* gradle: update wrapper to 8.1.1Harsh Shandilya2023-04-244-7/+8
| | | | Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* ui: update cleanupsJason A. Donenfeld2023-05-031-79/+98
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* version: bump1.0.20230502Jason A. Donenfeld2023-05-021-2/+2
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* gradle: downgrade wrapper to 8.0.1Jason A. Donenfeld2023-05-054-8/+7
| | | | | | | This reverts commit 455fcc076becafdf21944aaf2c1f1e9086eb2fd9 because of f-droid. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: use .seconds instead of .toDurationJason A. Donenfeld2023-05-051-2/+2
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: handle update signaturesJason A. Donenfeld2023-05-0110-15/+3123
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* version: bump1.0.20230427Jason A. Donenfeld2023-04-271-2/+2
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* gradle: trim experimental listJason A. Donenfeld2023-04-271-2/+2
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* proguard: cleanup unused partsJason A. Donenfeld2023-04-273-17/+2
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* build: bump activity-ktx and fragment-ktxJason A. Donenfeld2023-04-251-2/+2
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* strings: sync with crowdinJason A. Donenfeld2023-04-135-1/+29
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: display latest handshake timeJason A. Donenfeld2023-04-244-8/+94
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* tunnel: export latest handshake statJason A. Donenfeld2023-04-243-42/+74
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* gradle: update wrapper to 8.1.1Harsh Shandilya2023-04-244-7/+8
| | | | Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* tools: build elf-cleaner using system compilerJason A. Donenfeld2023-04-211-1/+1
| | | | | | | | | | Rather than using the NDK compiler for the host arch and hoping it picks up on system library locations, just use `cc` and rely on the traditional symlink to resolve that to the default host compiler. This should address build errors seen on macOS. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: remove unused extra_margin constantJason A. Donenfeld2023-04-131-1/+0
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* tools: ndk-compat: NDK now is minimum API 19Jason A. Donenfeld2023-04-132-58/+0
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* build: bump AGP to 8.0.0Jason A. Donenfeld2023-04-272-3/+1
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: layout: don't stretch text fields, so that alignment is correctJason A. Donenfeld2023-04-132-25/+25
| | | | | | This makes things look uniform on RTL. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: LogViewerActivity: cleanup ret valJason A. Donenfeld2023-04-131-2/+1
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* version: bump1.0.20230412Jason A. Donenfeld2023-04-121-2/+2
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* tools: do not put vcs info into go binaryJason A. Donenfeld2023-04-121-1/+1
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: further reduce log viewer memory usageJason A. Donenfeld2023-04-121-2/+1
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* tools: bump goJason A. Donenfeld2023-04-111-4/+4
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* tunnel: defer enabling strict mode until laterJason A. Donenfeld2023-04-111-4/+5
| | | | | | Startup code can be synchronous. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* tunnel: do not keep service running when bringing tunnel downJason A. Donenfeld2023-04-111-0/+3
| | | | | | | | Doing so causes the process to restart when the activity is cleared, even when no tunnel is running. I fear this might also lead to the current flurry of DeadSystemExceptions. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* tools: clean compile options a bitJason A. Donenfeld2023-04-111-2/+3
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* build: shrink resourcesJason A. Donenfeld2023-04-101-0/+1
| | | | | | Saves 300k. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: always show visible localized error messagesJason A. Donenfeld2023-04-071-3/+3
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: set app list button text on main threadJason A. Donenfeld2023-04-071-1/+1
| | | | | | | | Hopefully will fix, "Only the original thread that creted a view hierarchy can touch its views." Reported-by: Damir <2k1dmg@gmail.com> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* build: remove bespoke signing config propertiesJason A. Donenfeld2023-04-062-19/+1
| | | | | | | Keys should be in HSMs anyway, and a setup like this does not easily allow for that. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* build: bump depsJason A. Donenfeld2023-04-051-4/+4
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* version: bump1.0.20230405Jason A. Donenfeld2023-04-051-2/+2
| | | | Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* ui: allow vetoing tunnel selection changesJason A. Donenfeld2023-04-053-6/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These changes can happen at the wrong time, so we need to be able to walk them back. Fixes: Exception java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState at androidx.fragment.app.FragmentManager.checkStateLoss (FragmentManager.java:1610) at androidx.fragment.app.FragmentManager.enqueueAction (FragmentManager.java:1650) at androidx.fragment.app.BackStackRecord.commitInternal (BackStackRecord.java:341) at androidx.fragment.app.BackStackRecord.commit (BackStackRecord.java:306) at androidx.fragment.app.FragmentManagerKt.commit$default (FragmentManager.kt:35) at com.wireguard.android.activity.MainActivity.onSelectedTunnelChanged (MainActivity.kt:113) at com.wireguard.android.activity.BaseActivity.setSelectedTunnel (BaseActivity.kt:25) at com.wireguard.android.activity.BaseActivity$onCreate$1.invokeSuspend (BaseActivity.kt:44) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (ContinuationImpl.kt:33) at kotlinx.coroutines.internal.DispatchedContinuation.resumeUndispatchedWith (DispatchedContinuation.java:256) at kotlinx.coroutines.DispatchedTaskKt.resume (DispatchedTask.kt:177) at kotlinx.coroutines.CancellableContinuationImpl.parentCancelled$kotlinx_coroutines_core (CancellableContinuationImpl.kt:190) at kotlinx.coroutines.DispatchedTaskKt.resumeUnconfined (DispatchedTask.kt:190) at kotlinx.coroutines.DispatchedTaskKt.dispatch (DispatchedTask.kt:161) at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume (CancellableContinuationImpl.kt:397) at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl (CancellableContinuationImpl.kt:431) at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$default (CancellableContinuationImpl.kt:420) at kotlinx.coroutines.CancellableContinuationImpl.resumeWith (CancellableContinuationImpl.kt:328) at kotlinx.coroutines.ResumeAwaitOnCompletion.invoke (JobSupport.kt:1413) at kotlinx.coroutines.JobSupport.notifyHandlers (JobSupport.kt:368) at kotlinx.coroutines.JobSupport.notifyCompletion (JobSupport.kt:362) at kotlinx.coroutines.JobSupport.completeStateFinalization (JobSupport.kt:323) at kotlinx.coroutines.JobSupport.finalizeFinishingState (JobSupport.kt:240) at kotlinx.coroutines.JobSupport.tryMakeCompletingSlowPath (JobSupport.kt:906) at kotlinx.coroutines.JobSupport.tryMakeCompleting (JobSupport.kt:863) at kotlinx.coroutines.JobSupport.makeCompleting$kotlinx_coroutines_core (JobSupport.kt:806) at kotlinx.coroutines.CompletableDeferredImpl.complete (CompletableDeferredImpl.java:92) at com.wireguard.android.model.TunnelManager$onTunnelsLoaded$1.invokeSuspend (TunnelManager.kt:120) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run (DispatchedTask.kt:106) at android.os.Handler.handleCallback (Handler.java:938) at android.os.Handler.dispatchMessage (Handler.java:99) at android.os.Looper.loop (Looper.java:237) at android.app.ActivityThread.main (ActivityThread.java:8163) at java.lang.reflect.Method.invoke at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:656) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:967) Exception java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState at androidx.fragment.app.FragmentManager.checkStateLoss (FragmentManager.java:1610) at androidx.fragment.app.FragmentManager.enqueueAction (FragmentManager.java:1650) at androidx.fragment.app.BackStackRecord.commitInternal (BackStackRecord.java:341) at androidx.fragment.app.BackStackRecord.commit (BackStackRecord.java:306) at androidx.fragment.app.FragmentManagerKt.commit$default (FragmentManager.kt:35) at com.wireguard.android.activity.MainActivity.onSelectedTunnelChanged (MainActivity.kt:113) at com.wireguard.android.activity.BaseActivity.setSelectedTunnel (BaseActivity.kt:25) at com.wireguard.android.activity.BaseActivity$onCreate$1.invokeSuspend (BaseActivity.kt:44) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (ContinuationImpl.kt:33) at kotlinx.coroutines.internal.DispatchedContinuation.resumeUndispatchedWith (DispatchedContinuation.java:256) at kotlinx.coroutines.DispatchedTaskKt.resume (DispatchedTask.kt:177) at kotlinx.coroutines.CancellableContinuationImpl.parentCancelled$kotlinx_coroutines_core (CancellableContinuationImpl.kt:190) at kotlinx.coroutines.DispatchedTaskKt.resumeUnconfined (DispatchedTask.kt:190) at kotlinx.coroutines.DispatchedTaskKt.dispatch (DispatchedTask.kt:161) at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume (CancellableContinuationImpl.kt:397) at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl (CancellableContinuationImpl.kt:431) at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$default (CancellableContinuationImpl.kt:420) at kotlinx.coroutines.CancellableContinuationImpl.resumeWith (CancellableContinuationImpl.kt:328) at kotlinx.coroutines.ResumeAwaitOnCompletion.invoke (JobSupport.kt:1413) at kotlinx.coroutines.JobSupport.notifyHandlers (JobSupport.kt:368) at kotlinx.coroutines.JobSupport.notifyCompletion (JobSupport.kt:362) at kotlinx.coroutines.JobSupport.completeStateFinalization (JobSupport.kt:323) at kotlinx.coroutines.JobSupport.finalizeFinishingState (JobSupport.kt:240) at kotlinx.coroutines.JobSupport.tryMakeCompletingSlowPath (JobSupport.kt:906) at kotlinx.coroutines.JobSupport.tryMakeCompleting (JobSupport.kt:863) at kotlinx.coroutines.JobSupport.makeCompleting$kotlinx_coroutines_core (JobSupport.kt:806) at kotlinx.coroutines.CompletableDeferredImpl.complete (CompletableDeferredImpl.java:92) at com.wireguard.android.model.TunnelManager$onTunnelsLoaded$1.invokeSuspend (TunnelManager.kt:120) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run (DispatchedTask.kt:106) at android.os.Handler.handleCallback (Handler.java:938) at android.os.Handler.dispatchMessage (Handler.java:99) at android.os.Looper.loopOnce (Looper.java:210) at android.os.Looper.loop (Looper.java:299) at android.app.ActivityThread.main (ActivityThread.java:8302) at java.lang.reflect.Method.invoke at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:556) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1037) Exception java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState at androidx.fragment.app.FragmentManager.checkStateLoss (FragmentManager.java:1610) at androidx.fragment.app.FragmentManager.ensureExecReady (FragmentManager.java:1711) at androidx.fragment.app.FragmentManager.execPendingActions (FragmentManager.java:1754) at androidx.fragment.app.FragmentManager.popBackStackImmediate (FragmentManager.java:854) at androidx.fragment.app.FragmentManager.popBackStackImmediate (FragmentManager.java:778) at com.wireguard.android.activity.MainActivity.onSelectedTunnelChanged (MainActivity.kt:110) at com.wireguard.android.activity.BaseActivity.setSelectedTunnel (BaseActivity.kt:25) at com.wireguard.android.activity.BaseActivity$onCreate$1.invokeSuspend (BaseActivity.kt:44) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run (DispatchedTask.kt:106) at kotlinx.coroutines.EventLoop.processUnconfinedEvent (EventLoop.common.kt:69) at kotlinx.coroutines.DispatchedTaskKt.runUnconfinedEventLoop (DispatchedTask.kt:204) at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith (DispatchedContinuation.kt:282) at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable (Cancellable.kt:30) at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable$default (Cancellable.kt:25) at kotlinx.coroutines.CoroutineStart.invoke (CoroutineStart.java:110) at kotlinx.coroutines.AbstractCoroutine.start (AbstractCoroutine.kt:126) at kotlinx.coroutines.BuildersKt.launch$default (Builders.kt) at com.wireguard.android.model.TunnelManager.onTunnelsLoaded (TunnelManager.java:114) at com.wireguard.android.model.TunnelManager.access$onTunnelsLoaded (TunnelManager.java:40) at com.wireguard.android.model.TunnelManager$onCreate$1.invokeSuspend (TunnelManager.kt:104) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run (DispatchedTask.kt:106) at android.os.Handler.handleCallback (Handler.java:942) at android.os.Handler.dispatchMessage (Handler.java:99) at android.os.Looper.loopOnce (Looper.java:226) at android.os.Looper.loop (Looper.java:313) at android.app.ActivityThread.main (ActivityThread.java:8757) at java.lang.reflect.Method.invoke at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:571) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1067) Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>