summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--ext/socket/lib/socket.rb6
2 files changed, 10 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index e4101b0cef..16436fde42 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Wed Feb 4 00:17:52 2009 Tanaka Akira <akr@fsij.org>
+
+ * ext/socket/lib/socket.rb (Socket.tcp_server_sockets_port0): skip
+ socket creation error.
+
Tue Feb 3 23:37:08 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ruby.c (load_file_internal): resets EOF flag after parse.
diff --git a/ext/socket/lib/socket.rb b/ext/socket/lib/socket.rb
index c9b70433c1..0fbce1ca66 100644
--- a/ext/socket/lib/socket.rb
+++ b/ext/socket/lib/socket.rb
@@ -232,7 +232,11 @@ class Socket
sockets = []
port = nil
ai_list.each {|ai|
- s = Socket.new(ai.pfamily, ai.socktype, ai.protocol)
+ begin
+ s = Socket.new(ai.pfamily, ai.socktype, ai.protocol)
+ rescue SystemCallError
+ next
+ end
sockets << s
s.ipv6only! if ai.ipv6?
s.setsockopt(:SOCKET, :REUSEADDR, 1)