summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-04-14 14:35:50 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-04-14 14:35:50 +0000
commit57c75615b9934230e317fd6b84296d514e919a1f (patch)
tree354f33c37a6a692a9e290b31b718428ea3a97ff0 /ext
parente49591745581b0ffaa5bb25e7ec99134d98fd2fa (diff)
000414
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_4@667 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext')
-rw-r--r--ext/socket/extconf.rb2
-rw-r--r--ext/socket/getaddrinfo.c4
-rw-r--r--ext/socket/socket.c16
3 files changed, 20 insertions, 2 deletions
diff --git a/ext/socket/extconf.rb b/ext/socket/extconf.rb
index 6a2937bb3f..1adb7cc1b5 100644
--- a/ext/socket/extconf.rb
+++ b/ext/socket/extconf.rb
@@ -6,6 +6,7 @@ case PLATFORM
when /mswin32/
test_func = "WSACleanup"
have_library("wsock32", "WSACleanup")
+ have_func("closesocket")
when /cygwin/
# $LDFLAGS << " -L/usr/lib" if File.directory?("/usr/lib")
# $CFLAGS << " -I/usr/include"
@@ -14,6 +15,7 @@ when /cygwin/
when /beos/
test_func = "socket"
have_library("net", "socket")
+ have_func("closesocket")
when /i386-os2_emx/
test_func = "socket"
have_library("socket", "socket")
diff --git a/ext/socket/getaddrinfo.c b/ext/socket/getaddrinfo.c
index 0b9d9b6afc..c312b92705 100644
--- a/ext/socket/getaddrinfo.c
+++ b/ext/socket/getaddrinfo.c
@@ -421,7 +421,11 @@ getaddrinfo(hostname, servname, hints, res)
s = socket(afd->a_af, SOCK_DGRAM, 0);
if (s < 0)
continue;
+#if defined(HAVE_CLOSESOCKET)
+ closesocket(s);
+#else
close(s);
+#endif
if (pai->ai_flags & AI_PASSIVE) {
GET_AI(cur->ai_next, afd, afd->a_addrany, port);
diff --git a/ext/socket/socket.c b/ext/socket/socket.c
index 43bde950f4..b168abb284 100644
--- a/ext/socket/socket.c
+++ b/ext/socket/socket.c
@@ -185,7 +185,7 @@ bsock_close_read(sock)
rb_thread_fd_close(fileno(fptr->f));
fptr->mode &= ~FMODE_READABLE;
#ifdef NT
- free(fptr->f);
+ myfdclose(fptr->f);
#else
fclose(fptr->f);
#endif
@@ -209,7 +209,7 @@ bsock_close_write(sock)
shutdown(fileno(fptr->f2), 1);
fptr->mode &= ~FMODE_WRITABLE;
#ifdef NT
- free(fptr->f2);
+ myfdclose(fptr->f2);
#else
fclose(fptr->f2);
#endif
@@ -762,7 +762,11 @@ open_inet(class, h, serv, type)
}
if (status < 0) {
+#if defined(HAVE_CLOSESOCKET)
+ closesocket(fd);
+#else
close(fd);
+#endif
fd = -1;
continue;
} else
@@ -770,7 +774,11 @@ open_inet(class, h, serv, type)
}
if (status < 0) {
if (fd >= 0)
+#if defined(HAVE_CLOSESOCKET)
+ closesocket(fd);
+#else
close(fd);
+#endif
freeaddrinfo(res0);
rb_sys_fail(syscall);
}
@@ -1033,7 +1041,11 @@ open_unix(class, path, server)
}
if (status < 0) {
+#if defined(HAVE_CLOSESOCKET)
+ closesocket(fd);
+#else
close(fd);
+#endif
rb_sys_fail(sockaddr.sun_path);
}