tcp_poll() bug?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> kernel: 2.6.14.2
> 	2.6.14.6
> 	2.6.17.8
> 	(and probably others)
> 
...
>    13:44:26.226312 send(45, "GG\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 147, 0) = -1 ECONNRESET (Connection reset by peer) <0.000016>
> => 13:44:26.226437 select(1024, NULL, [45], NULL, {5, 0}) = 0 (Timeout) <4.999663>
> 
> After an ECONNRESET the fd should (still) be considered writable by
> select().

Got no reaction so far. I can reproduce the above with a C program.

While trying to figure out what is exactly happening I noticed something
in fs/select.c on top of do_select():

 #define POLLIN_SET (POLLRDNORM | POLLRDBAND | POLLIN | POLLHUP | POLLERR)
 #define POLLOUT_SET (POLLWRBAND | POLLWRNORM | POLLOUT | POLLERR)
 #define POLLEX_SET (POLLPRI)

POLLOUT_SET includes POLLERR. So isn't tcp_poll() supposed to tell the
upper layers about the ECONNRESET error?

-- 
Frank
-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux