On Friday 03 January 2003 00:28, Matthew Bloch wrote:
[snip]
> This only seems to happen when trying to talk to a UNIX socket which is
> being handled by a hung User-Mode Linux process: my question is, I suppose,
> whether I can do anything in Ruby to avert this hanging / blocking effect,
> or whether I can detect that it might happen before calling send on the
> socket.

Please excuse me, I'm not sure how I managed to make setting non-blocking mode 
on the socket sound like such an alien concept, or indeed that it was much to 
do with Ruby specifically.  For the record and future internet searchers, the 
code now looks like this which will raise Errno::EWOULDBLOCK in such an 
event:

    @proxy = Socket.new(Socket::AF_UNIX, Socket::SOCK_DGRAM, 0)
    @proxy.bind(sockaddr_struct_un(path))
    flags = @proxy.fcntl(3) # F_GETFL
    flags |= File::NONBLOCK
    @proxy.fcntl(4, flags)  # F_SETFL
    @path = path

I'm still keen to know if anyone has done a less grotty implementation of UNIX 
datagram sockets though.

-- 
Matthew          > http://www.soup-kitchen.net/
                 > ICQ 19482073 > AIM MattbeeUK