Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 28 Aug 2002 11:07:26 -0700 (PDT)
From:      Archie Cobbs <archie@dellroad.org>
To:        freebsd-net@freebsd.org
Cc:        eischen@pcnet1.pcnet.com
Subject:   Fix for bug in accept() on non-blocking socket
Message-ID:  <200208281807.g7SI7Qg44023@arch20m.dellroad.org>

next in thread | raw e-mail | index | archive | help
Hello -net,

Would anyone interested please review the patch to uipc_syscalls.c
contained in bin/42100 ?

    http://www.freebsd.org/cgi/query-pr.cgi?pr=42100

The problem relates to the behavior of accept() when called on a
socket that has been shutdown(2) for reading.

Normally, this causes ECONNABORTED to be returned. However, if the
socket is marked non-blocking (O_NONBLOCK), then EAGAIN is returned.
This of course is the return value that means 'no data available; try
again' for a non-blocking socket. Not a good choice :-)

This patch fixes things so ECONNABORTED is returned in the non-blocking
case as well.

Also: I remember someone complaining that the pthread(3) version of
Apache does not work on FreeBSD because some thread ends up spinning
and eating 100% CPU. This bug could possibly be related to that problem.
Might be worth a try...

Thanks,
-Archie

__________________________________________________________________________
Archie Cobbs     *     Packet Design     *     http://www.packetdesign.com

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?200208281807.g7SI7Qg44023>