Сценарий:
Delphi 2010 под управлением последней версии Indy из svn trunk.
У меня есть приложение, которое использует idHTTP для отправки http-запросов. Этот idHTTP создается только один раз и хранится в памяти до тех пор, пока работает приложение. Я отправляю множество веб-запросов на один и тот же http-сервер (который также является приложением, разработанным мной).
Я использую keep-alive для поддержания соединения с сокетом.
После нескольких запросов я получаю EIdConnClosedGracefully
на стороне клиента, и независимо от того, что я делаю после получения этого исключения, каждый следующий запрос к тому же серверу генерирует то же исключение.
Я пытался отключиться, закрыть сокет, очистить буфер IOHandler и ничего не помогло.
Если я уничтожу объект IdHttp и воссоздам его после возникновения исключения, все работает нормально. Но это не то, чего я хочу, потому что мне нужно постоянно быть подключенным к серверу (чтобы избежать TIME_WAITS и так далее).
Кто-нибудь знает, как обработать исключение EIdConnClosedGracefully
на стороне клиента и заставить idHttp работать после возникновения этого исключения?
EDIT
Я сам разрабатывал веб-сервер, и я уверен, что он не отключается после запроса клиента. Я знаю, что это исключение нормально, но что не нормально, так это то, что сокет становится непригодным для использования после этого. Indy должен восстанавливаться после этого исключения, отключая сокет и подключая его снова, когда это необходимо. Как я уже сказал, это исключение показывается пользователю, а не только на Delphis IDE. Что мне действительно нужно, так это способ, чтобы после получения этого исключения я мог продолжать использовать этот сокет. -