Имею достаточно примитивный transparent proxy под свои нужды. Но база простая — на WSaEventSelect и дальше по событиям.
Прекрасно работает под HTTP 1.0. Под 1.1 же имею проблемку... Соединение проходит. Все замечательно, все, что по нему должно пройти проходит, но потом связь не рвется. Событий никаких нет. Типа последнее перед остановкой — FD_READ от сервера. Принимаю. Передаю. По пути контролирую чтоб при чтении (recv) с сервера не вернулся ноль (не возвращается) , передаю тоже без проблем клиенту. И все. Встает на WSAWaitForMultipleEvents(2,hEvents,false,WSA_INFINITE,false);
Чувствую что деляю что-то не так. Таймауты вроде странно ставить на WSAWaitForMultipleEvents. Что еще делать не знаю. Инет весь перерыл.
Поможите люди добрые...
Здравствуйте, hbc, Вы писали:
hbc>Имею достаточно примитивный transparent proxy под свои нужды. Но база простая — на WSaEventSelect и дальше по событиям. hbc>Прекрасно работает под HTTP 1.0. Под 1.1 же имею проблемку... Соединение проходит. Все замечательно, все, что по нему должно пройти проходит, но потом связь не рвется. Событий никаких нет. Типа последнее перед остановкой — FD_READ от сервера. Принимаю. Передаю. По пути контролирую чтоб при чтении (recv) с сервера не вернулся ноль (не возвращается) , передаю тоже без проблем клиенту. И все. Встает на WSAWaitForMultipleEvents(2,hEvents,false,WSA_INFINITE,false); hbc>Чувствую что деляю что-то не так. Таймауты вроде странно ставить на WSAWaitForMultipleEvents. Что еще делать не знаю. Инет весь перерыл. hbc>Поможите люди добрые...
1.1 предусматривает persistent connections. В общем случае соединение закроется только если одна из сторон передала заголовок "Connection: close". Имеет ли прокси на это право, не помню. Полностью прозрачный прокси обязан мучиться с открытыми соединениями.
Здравствуйте, vnp, Вы писали:
vnp>1.1 предусматривает persistent connections. В общем случае соединение закроется только если одна из сторон передала заголовок "Connection: close". Имеет ли прокси на это право, не помню. Полностью прозрачный прокси обязан мучиться с открытыми соединениями.
Спасибо за ответ.
В принципе, я вижу в пакетах от сервера поле ContentLength: .Connection Close — не вижу. Теоритически можно зацепиться за длинну и контролировать ее. Типа — прислали весь пакет и рвем смязь помолясь.
Или есть какие другие способы?