From owner-freebsd-net Mon Aug 2 17:53: 9 1999 Delivered-To: freebsd-net@freebsd.org Received: from wiggum.com (ip31.sb.net [209.241.234.31]) by hub.freebsd.org (Postfix) with ESMTP id 34DB315232 for ; Mon, 2 Aug 1999 17:53:00 -0700 (PDT) (envelope-from engr@wiggum.com) Received: by wiggum.com (8.9.2/8.9.2) id RAA56853 for freebsd-net@FreeBSD.org; Mon, 2 Aug 1999 17:52:41 -0700 (PDT) (envelope-from engr) From: Xiaodong Shen Reply-To: xshen@sb.net Organization: Warp9tech To: freebsd-net@FreeBSD.org Subject: unix domain socket Date: Mon, 2 Aug 1999 16:39:25 -0700 X-Mailer: KMail [version 1.0.17] Content-Type: text/plain MIME-Version: 1.0 Message-Id: <99080217524106.55844@wiggum.com> Content-Transfer-Encoding: 8bit X-KMail-Mark: Sender: owner-freebsd-net@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org Hi there, I run a very simple client-server program using Unix Domain Socket on FreeBSD and Linux, the server part looks like this: for(;;){ unlink foo; //foo is something like a pipe on local file system open_socket; //AF_UNIX and SOCK_STREAM, get a socket say fd_listen bind; // with foo listen; // say on listening socket: fd_listen, len_queue = 5 select; // select on fd_listen accept; //get a new socket say fd_conn do_something; // on the socket fd_conn close(fd_conn); close(fd_listen); } On the client side I fork several child processes to simulate concurrent connections to the server. Results: Linux: all the connections are caught and handled by server. FreeBSD: some of the connections are missed during select() on server. Question: For FreeBSD when you close the listening socket, those connnections left in the listening queue that have not accepted by server will be cleared immediately in stead of hanging there like the case for Linux, is that right? Is there any BSD expert could give an explanation of what really happen in BSD's kernel? Should this be considered a bug of FreeBSD? Thanks a lot, Xiaodong Shen To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message