From: Petr Vandrovec <vandrove@vc.cvut.cz>
To: Valdis.Kletnieks@vt.edu
Cc: linux-kernel@vger.kernel.org
Subject: Re: select for UNIX sockets?
Date: Fri, 6 Jun 2003 02:38:12 +0200 [thread overview]
Message-ID: <20030606003812.GA31173@vana.vc.cvut.cz> (raw)
In-Reply-To: <200306060028.h560SkYU002114@turing-police.cc.vt.edu>
On Thu, Jun 05, 2003 at 08:28:46PM -0400, Valdis.Kletnieks@vt.edu wrote:
> On Wed, 04 Jun 2003 14:19:34 +0200, Petr Vandrovec said:
>
> > > > FD_ZERO(&set);
> > > > FD_SET(fd, &set);
> > > > select(FD_SETSIZE, NULL, &set, NULL, NULL); <<<<<<< for writing
> > > >
> > > > if (FD_ISSET(fd, &set))
> > > > sendto(fd, &datagram, 1, 0, ...);
>
> > Besides that select() on unconnected socket is nonsense... If you'll
> > change code to do connect(), select(), send(), then it should work,
> > unless I missed something.
>
> We FD_SET the bit, ignore the return value of select, and test if the bit is
> still set. Plenty of programming bad karma there. However, one would vaguely
> hope that the kernel would notice that the socket isn't connected and -ENOTCONN
> rather than blocking....
You'll get ENOTCONN from send, just sendto blocks. select() returns that fd is
ready because this end of socket is ready, and there is probably at least one
UNIX socket on the system which is ready to accept data - so I think that it
is correct that select() returns data ready.
I think that whole problem comes from code's author idea that UNIX datagram
sockets are equivalent to UDP through localhost while they are completely
different thing.
Petr Vandrovec
vandrove@vc.cvut.cz
next prev parent reply other threads:[~2003-06-06 0:24 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-06-04 12:19 Petr Vandrovec
2003-06-06 0:28 ` Valdis.Kletnieks
2003-06-06 0:38 ` Petr Vandrovec [this message]
-- strict thread matches above, loose matches on Subject: below --
2003-06-06 12:20 MarKol
2003-06-07 0:14 ` David Schwartz
2003-06-08 0:04 ` Krzysztof Halasa
2003-06-09 3:11 ` David Schwartz
2003-06-09 17:18 ` Krzysztof Halasa
2003-06-09 17:55 ` David Schwartz
2003-06-09 22:24 ` Krzysztof Halasa
2003-06-10 13:34 ` Timothy Miller
2003-06-10 13:52 ` Richard B. Johnson
2003-06-10 14:21 ` Krzysztof Halasa
2003-06-10 19:04 ` Jesse Pollard
2003-06-11 21:55 ` Krzysztof Halasa
2003-06-11 22:50 ` David Schwartz
2003-06-11 12:51 ` Edgar Toernig
2003-06-10 21:40 ` David Schwartz
2003-06-11 22:04 ` Krzysztof Halasa
2003-06-09 23:45 ` James Stevenson
2003-06-08 4:15 ` Chris Friesen
2003-06-09 3:05 ` David Schwartz
2003-06-09 16:46 ` MarKol
2003-06-09 17:05 ` David Schwartz
2003-06-03 0:08 Krzysztof Halasa
2003-06-03 14:51 ` Alan Cox
2003-06-04 23:27 ` Krzysztof Halasa
2003-06-05 13:17 ` Krzysztof Halasa
2003-06-04 11:55 ` Jesse Pollard
2003-06-04 12:42 ` Krzysztof Halasa
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20030606003812.GA31173@vana.vc.cvut.cz \
--to=vandrove@vc.cvut.cz \
--cc=Valdis.Kletnieks@vt.edu \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®