HTTP 1.1 transparent proxy (как сделать)?
От: hbc  
Дата: 26.10.06 15:36
Оценка:
Имею достаточно примитивный transparent proxy под свои нужды. Но база простая — на WSaEventSelect и дальше по событиям.
Прекрасно работает под HTTP 1.0. Под 1.1 же имею проблемку... Соединение проходит. Все замечательно, все, что по нему должно пройти проходит, но потом связь не рвется. Событий никаких нет. Типа последнее перед остановкой — FD_READ от сервера. Принимаю. Передаю. По пути контролирую чтоб при чтении (recv) с сервера не вернулся ноль (не возвращается) , передаю тоже без проблем клиенту. И все. Встает на WSAWaitForMultipleEvents(2,hEvents,false,WSA_INFINITE,false);
Чувствую что деляю что-то не так. Таймауты вроде странно ставить на WSAWaitForMultipleEvents. Что еще делать не знаю. Инет весь перерыл.
Поможите люди добрые...
Re: HTTP 1.1 transparent proxy (как сделать)?
От: vnp  
Дата: 26.10.06 19:48
Оценка:
Здравствуйте, 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". Имеет ли прокси на это право, не помню. Полностью прозрачный прокси обязан мучиться с открытыми соединениями.
Re[2]: HTTP 1.1 transparent proxy (как сделать)?
От: hbc  
Дата: 27.10.06 06:48
Оценка:
Здравствуйте, vnp, Вы писали:

vnp>1.1 предусматривает persistent connections. В общем случае соединение закроется только если одна из сторон передала заголовок "Connection: close". Имеет ли прокси на это право, не помню. Полностью прозрачный прокси обязан мучиться с открытыми соединениями.


Спасибо за ответ.
В принципе, я вижу в пакетах от сервера поле ContentLength: .Connection Close — не вижу. Теоритически можно зацепиться за длинну и контролировать ее. Типа — прислали весь пакет и рвем смязь помолясь.
Или есть какие другие способы?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.