Unexpected Hostname Causing Crash in Android
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
- #9773 di @omers-oai — chiusa senza merge
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 35/100
Direzione di ricerca
Start with the reported Dns.Request and RouteSelector.dnsLookup stack frames, then inspect the malformed-proxy regression test shown in the issue and related proxy tests. Run the focused test; done means a proxy hostname with trailing whitespace fails the request with an IOException rather than crashing the dispatcher thread.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
After upgrading to OkHttp 5.5.0 we got this crash report in our app
Fatal Exception: java.lang.IllegalArgumentException: unexpected hostname: internet.africell.co ao
at okhttp3.Dns$Request.<init>(Dns.kt:115)
at okhttp3.internal.connection.RouteSelector.dnsLookup(RouteSelector.java:224)
at okhttp3.internal.connection.RouteSelector.nextRoutes(RouteSelector.java:184)
at okhttp3.internal.connection.RouteSelector.nextProxy(RouteSelector.java:140)
at okhttp3.internal.connection.RouteSelector.next(RouteSelector.java:72)
at okhttp3.internal.connection.RealRoutePlanner.planConnect$okhttp(RealRoutePlanner.kt:170)
at okhttp3.internal.connection.RealRoutePlanner.plan(RealRoutePlanner.kt:77)
at okhttp3.internal.connection.FastFallbackExchangeFinder.launchTcpConnect(FastFallbackExchangeFinder.java:122)
at okhttp3.internal.connection.FastFallbackExchangeFinder.find(FastFallbackExchangeFinder.java:64)
at okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.java:306)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:32)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:332)
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:98)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:332)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:83)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:332)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:72)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:332)
at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:234)
at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:582)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1100)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:1572)
It's a valid IllegalStateException but I don't think it should crash the app.
Some test that might help:
/**
* A malformed system proxy, such as a carrier APN proxy whose host has a trailing space, must
* fail the request with an [IOException]. Before that it crashed the dispatcher thread with an
* unchecked [IllegalArgumentException] from `Dns.Request`.
*/
@Test
fun malformedProxyHostnameFailsGracefully() {
val proxySelector = RecordingProxySelector()
proxySelector.proxies.add(
Proxy(Proxy.Type.HTTP, InetSocketAddress.createUnresolved("internet ", 8080)),
)
client = client.newBuilder().proxySelector(proxySelector).build()
executeSynchronously(server.url("/").toString())
.assertFailure(UnknownHostException::class.java)
}
- Lingua principale
- Kotlin
- Stelle
- 47.1k
- Fork
- 9.3k
- Merge medio
- 18h 18m
- PR unite (30g)
- 15
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di lysine-dev/okhttp
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
lysine-dev/okhttp#9788 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
lysine-dev/okhttp#9761 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Remove crossinline `addInterceptor` and `addNetworkInterceptor` overloadsForse già presa @Amir-Golmoradi l’ha presa 6 giorni fa. Apertaenhancement
Difficoltà 3/5 1-2 giorni Idoneità per principianti 58/100
lysine-dev/okhttp#9779 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
HTTP/2 Data padding is not counted toward the connection flow-control window. This deadlocks connections with peers that pad.Forse già presa @Amir-Golmoradi l’ha presa 6 giorni fa. Apertabug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 67/100
lysine-dev/okhttp#9772 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 55/100
lysine-dev/okhttp#9760 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di lysine-dev/okhttp
Issue simili
-
afk-ok area:data-quality importer size:S
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
enorm-labs/event-junkie#3301 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
rustyrazorblade/easy-db-lab#1017 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
callstack/react-native-brownfield#492 · 1 commento ·
I maintainer di solito rispondono entro 4 giorni