ruby-changes:33050
From: naruse <ko1@a...>
Date: Sat, 22 Feb 2014 19:03:54 +0900 (JST)
Subject: [ruby-changes:33050] naruse:r45129 (ruby_2_1): merge revision(s) 45084: [Backport #9547]
naruse 2014-02-22 19:03:49 +0900 (Sat, 22 Feb 2014) New Revision: 45129 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=45129 Log: merge revision(s) 45084: [Backport #9547] * ext/socket/init.c (wait_connectable): break if the socket is writable to avoid infinite loops on FreeBSD and other platforms which conforms to SUSv3. This problem cannot be reproduced with loopback interfaces, so it's hard to write test code. rsock_connect() and wait_connectable() are overly complicated, so they should be refactored, but I commit this fix as a workaround for the release of Ruby 1.9.3 scheduled on Feb 24. [ruby-core:60940] [Bug #9547] Modified directories: branches/ruby_2_1/ Modified files: branches/ruby_2_1/ChangeLog branches/ruby_2_1/ext/socket/init.c branches/ruby_2_1/version.h Index: ruby_2_1/ChangeLog =================================================================== --- ruby_2_1/ChangeLog (revision 45128) +++ ruby_2_1/ChangeLog (revision 45129) @@ -1,3 +1,14 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_1/ChangeLog#L1 +Sat Feb 22 18:55:08 2014 Shugo Maeda <shugo@r...> + + * ext/socket/init.c (wait_connectable): break if the socket is + writable to avoid infinite loops on FreeBSD and other platforms + which conforms to SUSv3. This problem cannot be reproduced with + loopback interfaces, so it's hard to write test code. + rsock_connect() and wait_connectable() are overly complicated, so + they should be refactored, but I commit this fix as a workaround + for the release of Ruby 1.9.3 scheduled on Feb 24. + [ruby-core:60940] [Bug #9547] + Sat Feb 22 18:48:57 2014 Nobuyoshi Nakada <nobu@r...> * class.c (rb_mod_init_copy): do nothing if copying self. Index: ruby_2_1/ext/socket/init.c =================================================================== --- ruby_2_1/ext/socket/init.c (revision 45128) +++ ruby_2_1/ext/socket/init.c (revision 45129) @@ -323,8 +323,12 @@ wait_connectable(int fd) https://github.com/ruby/ruby/blob/trunk/ruby_2_1/ext/socket/init.c#L323 */ if (ret < 0) break; - if (sockerr == 0) - continue; /* workaround for winsock */ + if (sockerr == 0) { + if (revents & RB_WAITFD_OUT) + break; + else + continue; /* workaround for winsock */ + } /* BSD and Linux use sockerr. */ errno = sockerr; Index: ruby_2_1/version.h =================================================================== --- ruby_2_1/version.h (revision 45128) +++ ruby_2_1/version.h (revision 45129) @@ -1,6 +1,6 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_1/version.h#L1 #define RUBY_VERSION "2.1.1" #define RUBY_RELEASE_DATE "2014-02-22" -#define RUBY_PATCHLEVEL 72 +#define RUBY_PATCHLEVEL 73 #define RUBY_RELEASE_YEAR 2014 #define RUBY_RELEASE_MONTH 2 Property changes on: ruby_2_1 ___________________________________________________________________ Modified: svn:mergeinfo Merged /trunk:r45084 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/