Конференция "Сети" » IdHTTP.HEAD и 404
 
  • avil (04.01.12 15:00) [0]
    Приветствую всех.
    Даже не думал, что такое может оказаться проблемой:
    Работаю с HTTP через IdHTTP, хватаю информацию о файлах через HEAD. Возник такой косяк: при возвращении в заголовке 404 инди "отпускает" поток только после таймаута (если убрать таймаут вообще наглухо виснет). Можно было бы сделать таймаут покороче, но тогда возникает риск потерять соединение из-за лага.
    Возможно, кому-то уже знаком данный случай, можно ли научить инди корректно обрабатывать подобные ситуации?
  • avil (04.01.12 15:54) [1]
    Ручной дебаг исходников инди привел мои поски к тому, что инди обрабатывают ошибки head как при при других методах, когда возвращается контент. И процесс виснет на попытке анализировать данный контент (при ContentLength > 0) через IOHandler, дальше указатель начал теряться (видимо, используется наследник IOHandler`а, а не "встроенный"), дальше не полез, просто для метода HEAD вырубил данную операцию, после этого виснуть результат перестал. Там же отключил ожидание контента в еще одном месте, в котором при коде 200 тоже иногда возникает повисание. Но это уже, судя по всему, косяк 10го инди, т.к. в семерочном такой байды не случалось.
    Хотя у обоих зависаний для 404 и 200 ниточки ведут в одну сторону - обработка TidCustomHTTP.ReadResult -> IOHandler.ReadStream, и здесь все заканчивается.
    Думаю, сделать локальную версию и прикрутить флаг "только результат" без дополнительных тон проверок.
Есть новые Нет новых   [134435   +13][b:0][p:0]