ext/kgio/accept.c in kgio-2.8.0 vs ext/kgio/accept.c in kgio-2.8.0.2.g30c1

- old
+ new

@@ -66,11 +66,11 @@ { struct accept_args *a = ptr; int rv; rv = accept_fn(a->fd, a->addr, a->addrlen, a->flags); - if (rv == -1 && errno == ENOSYS && accept_fn != my_accept4) { + if (rv < 0 && errno == ENOSYS && accept_fn != my_accept4) { accept_fn = my_accept4; rv = accept_fn(a->fd, a->addr, a->addrlen, a->flags); } return (VALUE)rv; @@ -141,11 +141,13 @@ break; case AF_INET6: host_len = (long)INET6_ADDRSTRLEN; break; default: - rb_raise(rb_eRuntimeError, "unsupported address family"); + rb_raise(rb_eRuntimeError, + "unsupported address family: ss_family=%lu (socklen=%ld)", + (unsigned long)addr->ss_family, (long)len); } host = rb_str_new(NULL, host_len); host_ptr = RSTRING_PTR(host); rc = getnameinfo((struct sockaddr *)addr, len, host_ptr, host_len, NULL, 0, NI_NUMERICHOST); @@ -168,10 +170,10 @@ VALUE client_io; int retried = 0; retry: client_fd = thread_accept(a, force_nonblock); - if (client_fd == -1) { + if (client_fd < 0) { switch (errno) { case EAGAIN: if (force_nonblock) return Qnil; a->fd = my_fileno(a->accept_io);