Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие _ Проблема с Opera и POST

Автор: 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 потока, осуществляющего обработку запроса, и все заработало. Так и не понял, в чем была проблема (
Разбирайся на досуге, чтобы если наступишь на эти же грабли знал в чем проблема или выложи здесь, как было, как стало. попробуем вместе разобраться...

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)