Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 17 May 2010 22:05:25 +0300
From:      Kostik Belousov <kostikbel@gmail.com>
To:        Yoshihiko Sarumaru <ysarumaru@gmail.com>
Cc:        freebsd-net@freebsd.org, freebsd-stable@freebsd.org
Subject:   Re: odd behavior on select() after shutdown()
Message-ID:  <20100517190525.GP83316@deviant.kiev.zoral.com.ua>
In-Reply-To: <AANLkTilQexT6ZobWYe2MuPcsD5RnTsx3SL0Zru_01Q9C@mail.gmail.com>
References:  <AANLkTilQexT6ZobWYe2MuPcsD5RnTsx3SL0Zru_01Q9C@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--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--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100517190525.GP83316>