LINUX.ORG.RU

[бред] epoll_wait, EPOLLOUT, write -> fail

 


0

0

Неблокирующие сокеты, ПО работает в своеобразном режиме прокси. Т.е. принимает с одного сокета данные, потом их отправляет в другой. В определенный момент другой хост перестает принимать данные, возвращается -1, errno установлен в EWOULDBLOCK, данные помещаются в буффер, на сокет цепляется EPOLLOUT. Действительно, когда клиент готов, EPOLLOUT срабатывает, но. write возвращает -1, опять с EWOULDBLOCK. fd тот же. В момент приема tcpdump показывает отправление данных, видимо из буффера отправки (хотя netstat'ом не видно что он был O_o). Позже epoll_wait возвращает сокет как готовый к записи, но write, опять же, вываливается нахрен с -1/EWOULDBLOCK. Причем ни одного успешного write в сокет с момента первого фейла не было.

Что это может быть за фигня такая?

и что? никто не обещал, что если write возвращает EAGAIN, то после следующего EPOLLOUT он не вернёт снова EAGAIN

anonymous
()

Попробуй вызвать getsockopt с параметрами SOL_SOCKET, SO_ERROR и посмотреть, не вернет ли он более вменяемое сообщение об ошибке?

linuxfan
()

Вобщем там фигня была не с epoll, а с глобальными параметрами tcp, которые я выкрутил, и забыл закрутить назад. Ничего толкового

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