уважаемые сотоварищи!
Linux 2.4.18mdk6
столкнулся с такой проблемой.
имеется сокет TCP. типа client
после создания сокета он переводится в режим NONBLOCK, устанавливается linger: { 1, 0}.
устанавливается соединение... обмен данными...
вот когда Я закрываю соединение этим сокетом, клиенту шлется RST и сокет считается закрытым, все хорошо. клиент закрывает (для него это практически естественный способ, не спрашивайте, что за клиент :). а вот когда клиент закрывает сокет (например, не получает от меня ниче в течени 10 сек и решает что можно отавалиться), происходит следующее:
1) client.port > mysocket.port F seq_number
2) mysqocket.port > client.port . ack
клиент ждет от меня FIN2 2 секунды, потом:
3) client.port > mysocket.port R seq_number
все, соединение изчезает из нетстата! при этом мой неблокируемый recv ниче не сообщает. Я получаю сообщение о том что ECONNRESET только когда в следующий раз пытюсь записать что-нибудь в этот сокет.
Есть ли какие мысли? Я уже замучался. Сутки сижу, не пойму в чем дело. И поллом, и recvmsg(ERRQUEUE) пробовал...
WBR, Dvorkin