Вопрос

Буквально вчера во время отладки моего приложения для Android я понял, что всякий раз, когда обратный поиск DNS невозможен, мое соединение требует много времени для запуска (примерно около 20-30 секунд).

мне удалось сузить источник до вызова InetAddress.getHostName() (это занимает так много времени), но я (к сожалению) не знаю, как это обойти.Я понимаю, что SSL-соединения без проверки DNS более подвержены атакам MITM;в таких случаях я бы предпочел уведомить пользователя о проблемах, а не заставлять его вечно ждать загрузки и подключения приложения.Я просматривал Интернет взад и вперед в поисках ответа, я мог найти способы исправить это в Java, но ни один из них не применим к Android (по крайней мере, я не мог ни кэшировать inetaddress, ни использовать альтернативные классы для разрешения имен хостов). с внедрить свойство).

Есть ли способ ограничить тайм-аут некоторыми разумными тайм-аутами (скажем:2-3 секунды)?Я хотел бы сэкономить время, которое мне нужно будет потратить на переписывание SSL-сокетов как собственного кода Android.

Спасибо!

Это было полезно?

Решение

это связано (было) связано с ошибкой в ​​GLIBC, пытающейся выполнить обратный поиск имен хостов ipv6, даже если интерфейсы ipv6 не были настроены.

проблема и решение обсуждаются здесь:

https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/417757

это должно работать, если файл /etc/hosts обновлен для покрытия определенного IP-адреса

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top