From owner-freebsd-net@FreeBSD.ORG Mon Aug 10 07:31:45 2009 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DDE15106566C for ; Mon, 10 Aug 2009 07:31:45 +0000 (UTC) (envelope-from ady@ady.ro) Received: from mail-ew0-f206.google.com (mail-ew0-f206.google.com [209.85.219.206]) by mx1.freebsd.org (Postfix) with ESMTP id 3CFC98FC20 for ; Mon, 10 Aug 2009 07:31:44 +0000 (UTC) Received: by ewy2 with SMTP id 2so2806051ewy.43 for ; Mon, 10 Aug 2009 00:31:43 -0700 (PDT) MIME-Version: 1.0 Sender: ady@ady.ro Received: by 10.211.201.8 with SMTP id d8mr4857355ebq.7.1249889503878; Mon, 10 Aug 2009 00:31:43 -0700 (PDT) In-Reply-To: <18b5e36e0908092017o1d014262t45ef7cab7df098f0@mail.gmail.com> References: <18b5e36e0908060115g76a56da3qb23fdd208e7c4a4c@mail.gmail.com> <18b5e36e0908080142o5914903n335ebae17e82e985@mail.gmail.com> <78cb3d3f0908090438n63eefbb2t462385e8fcfb2395@mail.gmail.com> <18b5e36e0908092017o1d014262t45ef7cab7df098f0@mail.gmail.com> Date: Mon, 10 Aug 2009 09:31:43 +0200 X-Google-Sender-Auth: 9c37dd54d69672e4 Message-ID: <78cb3d3f0908100031k73301f88xef1bc9bf04730d09@mail.gmail.com> From: Adrian Penisoara To: Denis Berezhnoy Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: freebsd-net@freebsd.org Subject: Re: kevent behavior with TCP socket X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Aug 2009 07:31:46 -0000 Hi, On Mon, Aug 10, 2009 at 5:17 AM, Denis Berezhnoy wrote: > Hi Adrian, > Thank for your answer! I checked that nobody listens for loopback address: > > [denis@freebsd ~]$ sockstat -4 > USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS > > denis sshd 95390 3 tcp4 192.168.1.103:22 > 192.168.11.26:53616 > root sshd 95387 3 tcp4 192.168.1.103:22 > 192.168.11.26:53616 > denis sshd 95324 3 tcp4 192.168.1.103:22 > 192.168.11.26:53608 > root sshd 95321 3 tcp4 192.168.1.103:22 > 192.168.11.26:53608 > root sshd 8149 4 tcp4 *:22 *:* > root inetd 870 5 tcp4 *:21 *:* > root inetd 870 6 tcp4 *:23 *:* > root sendmail 821 4 tcp4 127.0.0.1:25 *:* > root syslogd 689 7 udp4 *:514 *:* > [denis@freebsd ~]$ > > > I printed out fflags. Here is the result: > > Kevent event num 1 wait time 46 > Event filter -2 flag 0 filter flags 0 data 43008 > > > When I comment out the part of the code that listens socket then I have the > following output: > > Kevent event num 1 wait time 23 > Event filter -2 flag 32768 filter flags 61 data 32768 > > > 61 is ECONNREFUSED > > > And more when I make loopback address listening and try to connect it I > still get the same output: > > Socket test start > Failed to connect with server 36 > Kevent event num 1 wait time 23 > Event filter -2 flag 0 filter flags 0 data 43008 > Socket test end > > but connection is actually accepted. I am totally confused here. > Well, actually it's very much evident: * When you don't make the listen() first, then the connection is correctly reported as refused * When you make the listen() on the INADDR_ANY then you will open port 10000 on all local IP addresses, _including_ the loopback address -- that's why the client connect() succeeds and kevent reports a success event. This is an expected behavior. Try to bind the sd descriptor to another port than the one used to connect onto the loopback address and you will see the connection being refused. Regards, Adrian EnterpriseBSD