jellyfin-sdk-kotlin icon indicating copy to clipboard operation
jellyfin-sdk-kotlin copied to clipboard

Discovery crashes with invalid port

Open nielsvanvelzen opened this issue 1 year ago • 0 comments

When a user is dumb and makes a typo and the HTTP port is out of range the discovery stuff throws an exception and the Android TV app crashes... I was the dumb user.

Stack Trace:

java.lang.IllegalArgumentException: port must be between 0 and 65535, or 0 if not set
	at io.ktor.http.Url.<init>(URLBuilder.kt:144)
	at io.ktor.http.URLBuilder.build(URLBuilder.kt:98)
	at org.jellyfin.sdk.discovery.AddressCandidateHelper.<init>(AddressCandidateHelper.kt:55)
	at org.jellyfin.sdk.discovery.DiscoveryService.getAddressCandidates(DiscoveryService.kt:27)
	at org.jellyfin.androidtv.auth.repository.ServerRepositoryImpl$addServer$1.invokeSuspend(ServerRepository.kt:90)
	at org.jellyfin.androidtv.auth.repository.ServerRepositoryImpl$addServer$1.invoke(Unknown Source:8)
	at org.jellyfin.androidtv.auth.repository.ServerRepositoryImpl$addServer$1.invoke(Unknown Source:4)
	at kotlinx.coroutines.flow.SafeFlow.collectSafely(Builders.kt:61)
	at kotlinx.coroutines.flow.AbstractFlow.collect(Flow.kt:230)
	at org.jellyfin.androidtv.ui.startup.ServerAddViewModel$addServer$1.invokeSuspend(ServerAddViewModel.kt:19)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith(DispatchedContinuation.kt:367)
	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.kt:110)
	at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
	at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
	at kotlinx.coroutines.BuildersKt.launch(Unknown Source:1)
	at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default(Builders.common.kt:47)
	at kotlinx.coroutines.BuildersKt.launch$default(Unknown Source:1)
	at org.jellyfin.androidtv.ui.startup.ServerAddViewModel.addServer(ServerAddViewModel.kt:18)
	at org.jellyfin.androidtv.ui.startup.fragment.ServerAddFragment.submitAddress(ServerAddFragment.kt:107)
	at org.jellyfin.androidtv.ui.startup.fragment.ServerAddFragment.onCreateView$lambda-4$lambda-3(ServerAddFragment.kt:50)
	at org.jellyfin.androidtv.ui.startup.fragment.ServerAddFragment.$r8$lambda$uSCCu62gCVZN90XjWAl5IwN7O5U(Unknown Source:0)
	at org.jellyfin.androidtv.ui.startup.fragment.ServerAddFragment$$ExternalSyntheticLambda0.onClick(Unknown Source:2)
	at android.view.View.performClick(View.java:6597)
	at android.view.View.performClickInternal(View.java:6574)
	at android.view.View.access$3100(View.java:778)
	at android.view.View$PerformClick.run(View.java:25885)
	at android.os.Handler.handleCallback(Handler.java:873)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loop(Looper.java:193)
	at android.app.ActivityThread.main(ActivityThread.java:6669)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
	Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@9106673, Dispatchers.Main.immediate]

Log lines before exception:

08-13 07:35:18.707 D/ServerRepositoryImpl$addServer( 4635): Adding server http://192.168.1.10:80961
08-13 07:35:18.707 D/AddressCandidateHelper( 4635): Input is http://192.168.1.10:80961

nielsvanvelzen avatar Aug 13 '22 07:08 nielsvanvelzen