--WU1McKeqU8MHoLZD
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
On Tue, May 18, 2010 at 01:08:50AM +0900, Yoshihiko Sarumaru wrote:
> Hi all,
>=20
> Select(2) has three arguments to get socket status for read, write and ex=
cept.
> After upgrading to 8.0-RELEASE, select() after shutdown(SHUT_WR) returns =
with
> the status exceptfds is set. It means out-of-bound data can be read
> from the socket,
> but recv() with OOB flag returns ECONNRESET, and no packets with urgent f=
lag
> was observed by tcpdump.
> It seems strange for me, but is it an intentional change on 8.x ?
>=20
> This behavior breaks net/stone on 8.0-RELEASE.
> http://www.freebsd.org/cgi/query-pr.cgi?pr=3Dports/141103
> The continuous recv() error on PR might lead by incorrectly setted
> exceptfds on every recv()
> and it should be fixed, but it doesn't matter if above behavior of
> select() doesn't occur.
The patch below would fix the problem at hand. I am wondering what
unintended consequences it might have.
diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c
index eaefd9c..293dbb1 100644
--- a/sys/kern/sys_generic.c
+++ b/sys/kern/sys_generic.c
@@ -996,7 +996,7 @@ done:
static int select_flags[3] =3D {
POLLRDNORM | POLLHUP | POLLERR,
POLLWRNORM | POLLHUP | POLLERR,
- POLLRDBAND | POLLHUP | POLLERR
+ POLLRDBAND | POLLERR
};
=20
/*
--WU1McKeqU8MHoLZD
Content-Type: application/pgp-signature
Content-Disposition: inline
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (FreeBSD)
iEYEARECAAYFAkvxk3UACgkQC3+MBN1Mb4jAjACcC4GG1mQAc0P/VILhbTLePh8S
XGUAoI7HPzC9LT1HfFRbLExOfjvWm9Rz
=wZ1x
-----END PGP SIGNATURE-----
--WU1McKeqU8MHoLZD--