Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 03 Feb 2000 22:17:31 -0800
From:      Gene Kan <genehkan@scam.xcf.berkeley.edu>
To:        freebsd-net@freebsd.org
Subject:   Non-blocking sockets and network outages
Message-ID:  <20000204061731.85976.qmail@scam.xcf.berkeley.edu>

next in thread | raw e-mail | index | archive | help
I've got an interesting problem involving non-blocking sockets and network
outages.  In all cases, SO_KEEPALIVE is on, and
net.inet.tcp.always_keepalive: 1.  The problem manifests itself when
there is a net partition, the other endpoint loses power, or something of
that sort.  Basically, when a connection dies without first notifying with
RST or FIN.

If I mark a socket for reading, the fd will just never become active, and
I have an ESTABLISHED connection (verified with netstat) forever.

If I do a non-blocking write, the write will return -1 with errno==EAGAIN.
Obviously, since it just looks like the other side isn't slurping up the
data because I'm not getting a window update.

Finally...I can't figure out why the keepalives aren't taking care of all
this for me, and discovering the connections are dead.  I waited for hours,
which surely should have been more than all timeouts...

Thanks for any help.

Gene


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message




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