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

ruby-changes:9669

From: akr <ko1@a...>
Date: Wed, 31 Dec 2008 17:18:26 +0900 (JST)
Subject: [ruby-changes:9669] Ruby:r21210 (trunk): * ext/openssl/ossl_ssl.c (ossl_ssl_read_internal): show openssl error

akr	2008-12-31 17:18:12 +0900 (Wed, 31 Dec 2008)

  New Revision: 21210

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

  Log:
    * ext/openssl/ossl_ssl.c (ossl_ssl_read_internal): show openssl error
      code in EWOULDBLOCK error.

  Modified files:
    trunk/ChangeLog
    trunk/ext/openssl/ossl_ssl.c
    trunk/test/openssl/test_pair.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 21209)
+++ ChangeLog	(revision 21210)
@@ -1,3 +1,8 @@
+Wed Dec 31 17:16:46 2008  Tanaka Akira  <akr@f...>
+
+	* ext/openssl/ossl_ssl.c (ossl_ssl_read_internal): show openssl error
+	  code in EWOULDBLOCK error.
+
 Wed Dec 31 15:45:18 2008  Tanaka Akira  <akr@f...>
 
 	* io.c (copy_stream_body): don't check to_io because
Index: ext/openssl/ossl_ssl.c
===================================================================
--- ext/openssl/ossl_ssl.c	(revision 21209)
+++ ext/openssl/ossl_ssl.c	(revision 21210)
@@ -1024,14 +1024,14 @@
 	    case SSL_ERROR_WANT_WRITE:
                 if (nonblock) {
                     errno = EWOULDBLOCK;
-                    rb_sys_fail(0);
+                    rb_sys_fail("SSL_ERROR_WANT_WRITE");
                 }
                 rb_io_wait_writable(FPTR_TO_FD(fptr));
                 continue;
 	    case SSL_ERROR_WANT_READ:
                 if (nonblock) {
                     errno = EWOULDBLOCK;
-                    rb_sys_fail(0);
+                    rb_sys_fail("SSL_ERROR_WANT_READ");
                 }
                 rb_io_wait_readable(FPTR_TO_FD(fptr));
 		continue;
Index: test/openssl/test_pair.rb
===================================================================
--- test/openssl/test_pair.rb	(revision 21209)
+++ test/openssl/test_pair.rb	(revision 21210)
@@ -146,7 +146,15 @@
 
   def test_read_nonblock
     ssl_pair {|s1, s2|
-      assert_raise(Errno::EWOULDBLOCK) { s2.read_nonblock(10) }
+      err = nil
+      assert_raise(Errno::EWOULDBLOCK) {
+        begin
+          s2.read_nonblock(10)
+        ensure
+          err = $!
+        end
+      }
+      assert_match(/SSL_ERROR_WANT_READ/, err.message)
       s1.write "abc\ndef\n"
       assert_equal("ab", s2.read_nonblock(2))
       assert_equal("c\n", s2.gets)

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

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