Titanium HTTPClient - TSL-соединения иногда теряются на Android (не на iOS) - PullRequest
1 голос
/ 10 марта 2020

Это очень, очень странная проблема. Мы получили приложение на основе Titanium SDK (я думаю, версии 7.4.1), которое получает данные через API с наших серверов. Эти соединения работают с TSL и в основном это работает. Но: некоторые соединения не получают данные, они просто сталкиваются с таймаутом. Я сделал некоторую отладку на этом, и это привело к еще более странной вещи: рабочие соединения работают действительно хорошо, но нерабочие делают странные вещи. Приложение подключается к серверу, сервер отправляет ACK. После этого приложение отправляет ClientHello и получает ACK - но ничего не следует. Приложение ожидает ServerHello до истечения времени ожидания соединения. Это все из tcpdump. Поэтому я создал тот же дамп на стороне сервера, и здесь он начинает становиться действительно странным: для нерабочих соединений начальное рукопожатие уже есть. Но ClientHello не получен сервером.

Это ставит меня в тупик, потому что приложение получает ACK для отправленного ClientHello. Кто отправляет это TF, когда сервер так и не получил? Это виртуальная машина в более крупном кластере - может быть, она подтверждена до того, как она достигнет виртуальной машины?

Поскольку я упоминал и о Titanium: проблема возникает ТОЛЬКО на Android. Версия iOS приложения (с тем же кодом) не затронута!

Есть идеи от кого-нибудь? Весь вклад высоко ценится.

...