LINUX.ORG.RU

http_proxy


0

0

Пишу http_proxy.
Присоединяюсь к www.ya.ru, посылаю запрос, получаю ответ и ЗАКРЫТИЕ соединения (recv() == 0).
Присоединяюсь к чужому прокси (сквид) передаю ему запрос, получаю от него ответ и СОЕДИНЕНИЕ ПРОДОЛЖАЕТ ВИСЕТЬ (recv() == EAGAIN).

Это вообще нормально ?!! Неужели EAGAIN нужно воспринемать как окончание передачи ?!! Может что-то на линии просело... Прав ли тут сквид ?

anonymous

GET http://www.ya.ru/ HTTP/1.1

С запросом все впорядке, оно отвечает, полностью отдает страницу и продолжает висеть (recv() == EAGAIN). Хотя должно имхо закрывать соединение (recv() = 0)

anonymous
()
Ответ на: комментарий от anonymous

Запрос дает мозилка которая заходит на мой http_proxy, так что с запросом все правильно. Дальше я пересылаю этот запрос и получаю ПРАВИЛЬНУЮ страничку с www.ya.ru, но если обращатся напрямую к www.ya.ru, то после получения странички соединение сервером (www.ya.ru) закрывается (recv() == 0), а если обращатся через еще одну http_proxy (сквид) к www.ya.ru, то после получения странички опять же правильной соедиение с сервером (сквид) не закрывается а висит (recv() == EAGAIN).

Правильно ли ведет себя сквид ?
Неужели нужно recv() == EAGAIN наряду с recv() == 0 то-же воспринемать как корректное окончание передачи сервером ?

anonymous
()
Ответ на: комментарий от anonymous

запрос покажи
остальные поля
возможно мозила keep-alive делает вот сквид
и ждет дальнейших запросов

anonymous
()
Ответ на: комментарий от anonymous

Да я посмотрел несколько раньше, она делает keep-alive неужели это правильно ? Всмысле она получается определяет конец документа по факту получения recv() == EAGAIN, неужели это правильно ?!!

anonymous
()
Ответ на: комментарий от anonymous

В 1.1 опираться на закрытие соединения не есть хорошо. Его ради того и придумали, чтобы соединения не закрывать без необходимости.

Конец документа определяется по его размеру (если присутствует Content-Length) или по нулевому чанку (если присутствует Transfer-Encoding: chunked). Только если ни того ни другого не пришло, _приходится_ смотреть на состояние сокета.

vnp
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.