diff options
Diffstat (limited to 'ext/socket')
-rw-r--r-- | ext/socket/unixsocket.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/ext/socket/unixsocket.c b/ext/socket/unixsocket.c index 519343b558..0a1b65a5b9 100644 --- a/ext/socket/unixsocket.c +++ b/ext/socket/unixsocket.c @@ -34,10 +34,6 @@ rsock_init_unixsock(VALUE sock, VALUE path, int server) rb_io_t *fptr; SafeStringValue(path); - fd = rsock_socket(AF_UNIX, SOCK_STREAM, 0); - if (fd < 0) { - rsock_sys_fail_path("socket(2)", path); - } INIT_SOCKADDR_UN(&sockaddr, sizeof(struct sockaddr_un)); if (sizeof(sockaddr.sun_path) < (size_t)RSTRING_LEN(path)) { @@ -47,6 +43,11 @@ rsock_init_unixsock(VALUE sock, VALUE path, int server) memcpy(sockaddr.sun_path, RSTRING_PTR(path), RSTRING_LEN(path)); sockaddrlen = rsock_unix_sockaddr_len(path); + fd = rsock_socket(AF_UNIX, SOCK_STREAM, 0); + if (fd < 0) { + rsock_sys_fail_path("socket(2)", path); + } + if (server) { status = bind(fd, (struct sockaddr*)&sockaddr, sockaddrlen); } |