Автор: PotapovPV 6.5.2010, 19:18
Добрый вечер!
ВОзникла проблема с приложением, эмулирующим работу web-сервера. Суть следующая - при обработке запроса POST от браузера Opera после получением браузера какого-либо ответа на свой запрос он рвет соединение... Кусок трафика, пойманого снифером:
Кто-нибудь сталкивался с чем-нибудь подобным?
Автор: ViGOur 6.5.2010, 19:32
Какой ответ отправляешь броузеру?
Connection: Keep-Alive используешь?
Автор: PotapovPV 6.5.2010, 21:27
Цитата(ViGOur @ 6.5.2010, 20:32)
Какой ответ отправляешь броузеру?
Connection: Keep-Alive используешь?
Ответы пробовал разные. А проблема оказалась именно в Connection, оказывается, я не правильно понимал механизм его работы...
Спасибо!
Цитата(PotapovPV @ 6.5.2010, 21:57)
Ответы пробовал разные. А проблема оказалась именно в Connection, оказывается, я не правильно понимал механизм его работы...
Спасибо!
Хотя, я слишком рано обрадовался...
Коннектион кип элайв использую. Методы пробовал возвращать OK, REDIRECT, METHOD NOT ALLOWED
на любой их низ соединение обрывается уже указанным образом...
Автор: ViGOur 6.5.2010, 22:36
Попробуй добавить:
Keep-Alive: timeout=15, max=100
Автор: PotapovPV 12.5.2010, 11:08
Цитата(ViGOur @ 6.5.2010, 23:36)
Попробуй добавить:
Keep-Alive: timeout=15, max=100
не помогает (
Я тут обнаружил, что даже в случае корректной обработки методов GET, когда полученная от эмулятора страничка успешно отображается в браузере, после корректного завершения соединения (обмена FIN-ACK) от клиента приходит пакет с RST. Возможно, это как-то связано? МОжет, я как-то неправильно соединение закрываю?...
if (qsockSocket.isOpen() || qstrResponce.contains("Connection: Close"))
{
qsockSocket.disconnectFromHost();
qsockSocket.waitForDisconnected();
}
Если делать все пошагово в отладчике - запроса обрабатывается корректно, ответ браузером принимается и никаких пакетов с RST не приходит...
Автор: ViGOur 12.5.2010, 22:53
А что возвращает waitForDisconnected, если false, то глянь, что за ошибка...
А так, если у тебя в дебаге проблем не наблюдается, то как показывает практика нужно присмотреться к синхронизации...
Автор: PotapovPV 12.5.2010, 22:56
Цитата(ViGOur @ 12.5.2010, 23:53)
А что возвращает waitForDisconnected, если false, то глянь, что за ошибка...
А так, если у тебя в дебаге проблем не наблюдается, то как показывает практика нужно присмотреться к синхронизации...
Спасибо за помощь.
ПОлностью переписал метод run потока, осуществляющего обработку запроса, и все заработало. Так и не понял, в чем была проблема (
Автор: ViGOur 12.5.2010, 23:01
Цитата(PotapovPV @ 12.5.2010, 23:56)
ПОлностью переписал метод run потока, осуществляющего обработку запроса, и все заработало. Так и не понял, в чем была проблема (
Разбирайся на досуге, чтобы если наступишь на эти же грабли знал в чем проблема или выложи здесь, как было, как стало. попробуем вместе разобраться...