セキュアソケット、DNS、およびgetNameInfoタイムアウト
-
26-10-2019 - |
質問
昨日、Androidアプリのデバッグ中に、逆DNSルックアップが不可能な場合はいつでも、私の接続が開始するのに時間の負荷がかかることがわかりました(約20〜30秒)。
ソースをinetaddress.gethostname()コールに絞り込むことができました(そこには時間がかかります)が、私は(残念ながら)私がそれをどのように進めることができるかについて無知です。 DNS検証なしのSSL接続は、MITM攻撃を起こしやすいことを理解しています。そのような場合、アプリケーションがロードされて接続するのを永遠に待つのではなく、問題についてユーザーに通知したいと思います。私は答えを探してウェブを閲覧してきました、私はJavaでそれを修正する方法を見つけることができましたが、それらのどれもAndroidに適用されません(少なくとも私はInetAddressをキャッシュすることもできませんでした。と 実装 財産)。
タイムアウトを合理的なタイムアウトに制限する方法はありますか(たとえば、2〜3秒)? SSLソケットをAndroidネイティブコードとして書き直すために必要な時間を節約したいと思います。
ありがとう!
解決
これは、IPv6インターフェイスが構成されていない場合でも、IPv6ホスト名をルックアップしようとするGLIBCのバグに関連しています。
問題と修正についてここで説明します:
https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/417757
特定のIPアドレスをカバーするために /etc /hostsファイルが更新された場合に機能するはずです
所属していません StackOverflow