[前][次][番号順一覧][スレッド一覧]

ruby-changes:33024

From: nagachika <ko1@a...>
Date: Sat, 22 Feb 2014 13:18:02 +0900 (JST)
Subject: [ruby-changes:33024] nagachika:r45103 (ruby_2_0_0): merge revision(s) r45084: [Backport #9547]

nagachika	2014-02-22 13:17:51 +0900 (Sat, 22 Feb 2014)

  New Revision: 45103

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=45103

  Log:
    merge revision(s) r45084: [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_0_0/
  Modified files:
    branches/ruby_2_0_0/ChangeLog
    branches/ruby_2_0_0/ext/socket/init.c
    branches/ruby_2_0_0/version.h
Index: ruby_2_0_0/ChangeLog
===================================================================
--- ruby_2_0_0/ChangeLog	(revision 45102)
+++ ruby_2_0_0/ChangeLog	(revision 45103)
@@ -1,3 +1,14 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_0_0/ChangeLog#L1
+Sat Feb 22 13:04:54 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 12:55:24 2014  CHIKANAGA Tomoyuki  <nagachika@r...>
 
 	(merged partially from r42927)
Index: ruby_2_0_0/ext/socket/init.c
===================================================================
--- ruby_2_0_0/ext/socket/init.c	(revision 45102)
+++ ruby_2_0_0/ext/socket/init.c	(revision 45103)
@@ -314,8 +314,12 @@ wait_connectable(int fd) https://github.com/ruby/ruby/blob/trunk/ruby_2_0_0/ext/socket/init.c#L314
 	     */
 	    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_0_0/version.h
===================================================================
--- ruby_2_0_0/version.h	(revision 45102)
+++ ruby_2_0_0/version.h	(revision 45103)
@@ -1,6 +1,6 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_0_0/version.h#L1
 #define RUBY_VERSION "2.0.0"
 #define RUBY_RELEASE_DATE "2014-02-22"
-#define RUBY_PATCHLEVEL 446
+#define RUBY_PATCHLEVEL 447
 
 #define RUBY_RELEASE_YEAR 2014
 #define RUBY_RELEASE_MONTH 2

Property changes on: ruby_2_0_0
___________________________________________________________________
Modified: svn:mergeinfo
   Merged /trunk:r45084


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]