summaryrefslogtreecommitdiff
path: root/ext/socket/init.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/socket/init.c')
-rw-r--r--ext/socket/init.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/ext/socket/init.c b/ext/socket/init.c
index 85cc3de4f9..b143dccd5f 100644
--- a/ext/socket/init.c
+++ b/ext/socket/init.c
@@ -45,10 +45,15 @@ rsock_init_sock(VALUE sock, int fd)
rb_io_t *fp;
struct stat sbuf;
+#ifndef _WIN32
if (fstat(fd, &sbuf) < 0)
rb_sys_fail(0);
if (!S_ISSOCK(sbuf.st_mode))
rb_raise(rb_eArgError, "not a socket file descriptor");
+#else
+ if (!rb_w32_is_socket(fd))
+ rb_raise(rb_eArgError, "not a socket file descriptor");
+#endif
MakeOpenFile(sock, fp);
fp->fd = fd;