Domanda

proprio ieri durante il debug mio app Android ho capito che ogni volta che ricerca DNS inversa non è possibile la mia connessione si carichi sacco di tempo per avviare (approssimativamente circa 20-30 secondi).

sono riuscito a restringere la sorgente da InetAddress.getHostName () chiamata (è lì che ci vuole così tanto tempo), ma io sono (purtroppo) all'oscuro su come avrei potuto lavorare in giro. Capisco che le connessioni SSL con alcuna verifica DNS sono più inclini ad attacchi MITM; in questi casi io preferirei informare l'utente sui problemi, piuttosto che farlo aspettare per sempre per l'applicazione per caricare e collegare. sono stato navigando sul retro web e indietro a cercare la risposta, ho potuto trovare il modo di correzione che in Java, ma nessuno di loro vale per Android (almeno ho potuto non la cache InetAddress né utilizzare le classi alternative per risolvere i miei nomi host con impl di proprietà).

c'è qualche modo ho potuto limitare il timeout per alcuni timeout ragionevole (diciamo: 2-3 secondi)? vorrei salvare il tempo che avevo bisogno di spendere ri-scrittura di socket SSL come codice nativo Android.

grazie!

È stato utile?

Soluzione

questo è (era) relative a un bug in GLIBC cercando per la ricerca inversa IPv6 nomi host anche se non sono stati configurati IPv6 interfacce.

il problema e risolverlo sono discusse qui:

https://bugs.launchpad.net/ubuntu/+source / EGLIBC / + bug / 417.757

dovrebbe funzionare se / etc / hosts viene aggiornato per coprire particolare indirizzo IP

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top