#1195: Socket#accept_nonblock blocks for Unix domain socket --------------------------------------+------------------------------------- Reporter: warpflyght@… | Owner: lsansonetti@… Type: defect | Status: new Priority: major | Milestone: Component: MacRuby | Keywords: --------------------------------------+------------------------------------- Comment(by warpflyght@…): Looks like this is because of this declaration near the top of socket.c: {{{ #!c // TODO #define rb_io_set_nonblock(x) }}} I ported the Ruby 1.9.2 implementation from io.c, and it has worked in my testing thus far: {{{ #!c void rb_io_set_nonblock(rb_io_t *fptr) { int oflags; #ifdef F_GETFL oflags = fcntl(fptr->fd, F_GETFL); if (oflags == -1) { rb_sys_fail(StringValueCStr(fptr->path)); } #else oflags = 0; #endif if ((oflags & O_NONBLOCK) == 0) { oflags |= O_NONBLOCK; if (fcntl(fptr->fd, F_SETFL, oflags) == -1) { rb_sys_fail(StringValueCStr(fptr->path)); } } } }}} -- Ticket URL: <http://www.macruby.org/trac/ticket/1195#comment:1> MacRuby <http://macruby.org/>