[#22195] IO::for_io and TCPServer#bind — GOTOU Yuuzou <gotoyuzo@...>

test_drb が IPv4 射影アドレスが有効な環境でないと動かないこ

16 messages 2003/12/09
[#22198] Re: IO::for_io and TCPServer#bind — matz@... (Yukihiro Matsumoto) 2003/12/09

まつもと ゆきひろです

[#22205] yet another inconsistency about EOF between StringIO and IO — Tanaka Akira <akr@...17n.org>

StringIO の

24 messages 2003/12/10
[#22206] Re: yet another inconsistency about EOF between StringIO and IO — nobu.nakada@... 2003/12/10

なかだです。

[#22214] Re: yet another inconsistency about EOF between StringIO and IO — Tanaka Akira <akr@...17n.org> 2003/12/10

In article <200312100725.hBA7P8Ac011112@sharui.nakada.kanuma.tochigi.jp>,

[#22222] Re: yet another inconsistency about EOF between StringIO and IO — nobu.nakada@... 2003/12/10

なかだです。

[#22234] Re: yet another inconsistency about EOF between StringIO and IO — Masahiro Sakai (酒井政裕) <sakai@...> 2003/12/11

さかいといいます。

[#22262] Re: yet another inconsistency about EOF between StringIO and IO — Tanaka Akira <akr@...17n.org> 2003/12/13

In article <20031211.214041.71090239.sakai@tom.sfc.keio.ac.jp>,

[#22328] Re: yet another inconsistency about EOF between StringIO and IO — Tanaka Akira <akr@...17n.org> 2003/12/23

In article <87k751dzyf.fsf@serein.a02.aist.go.jp>,

[#22331] Re: yet another inconsistency about EOF between StringIO and IO — matz@... (Yukihiro Matsumoto) 2003/12/23

まつもと ゆきひろです

[#22334] Re: yet another inconsistency about EOF between StringIO and IO — Tanaka Akira <akr@...17n.org> 2003/12/23

In article <1072167374.096702.13473.nullmailer@picachu.netlab.jp>,

[#22343] Re: yet another inconsistency about EOF between StringIO and IO — matz@... (Yukihiro Matsumoto) 2003/12/23

まつもと ゆきひろです

[#22330] core dump with ungetc — Tanaka Akira <akr@...17n.org>

次のように ungetc を使うと core を吐く場合があります。

14 messages 2003/12/23
[#22332] Re: core dump with ungetc — nobu.nakada@... 2003/12/23

なかだです。

[#22366] `to_s': method `to_s' overridden (TypeError) — Tanaka Akira <akr@...17n.org>

そういえば、次の `to_s': method `to_s' overridden (TypeError) というの

12 messages 2003/12/24

[#22385] Tk.callback_break causes seg-fault or hang-up — Hidetoshi NAGAI <nagai@...>

永井@知能.九工大です.

19 messages 2003/12/24
[#22387] Re: Tk.callback_break causes seg-fault or hang-up — matz@... (Yukihiro Matsumoto) 2003/12/24

まつもと ゆきひろです

[#22393] Re: Tk.callback_break causes seg-fault or hang-up — Hidetoshi NAGAI <nagai@...> 2003/12/24

永井@知能.九工大です.

[#22395] Re: Tk.callback_break causes seg-fault or hang-up — matz@... (Yukihiro Matsumoto) 2003/12/24

まつもと ゆきひろです

[#22396] Re: Tk.callback_break causes seg-fault or hang-up — matz@... (Yukihiro Matsumoto) 2003/12/24

まつもと ゆきひろです

[#22397] Re: Tk.callback_break causes seg-fault or hang-up — Hidetoshi NAGAI <nagai@...> 2003/12/24

永井@知能.九工大です.

[#22418] ruby-1.8.1 build failed on HP-UX 11.11 — MIYAMUKO Katsuyuki <k-miyamuko@...>

みやむこです。

29 messages 2003/12/25
[#22419] Re: ruby-1.8.1 build failed on HP-UX 11.11 — matz@... (Yukihiro Matsumoto) 2003/12/25

まつもと ゆきひろです

[#22420] Re: ruby-1.8.1 build failed on HP-UX 11.11 — matz@... (Yukihiro Matsumoto) 2003/12/25

まつもと ゆきひろです

[#22424] Re: ruby-1.8.1 build failed on HP-UX 11.11 — MIYAMUKO Katsuyuki <k-miyamuko@...> 2003/12/25

みやむこです。

[#22491] Re: ruby-1.8.1 build failed on HP-UX 11.11 — MIYAMUKO Katsuyuki <k-miyamuko@...> 2004/01/05

みやむこです。

[ruby-dev:22172] Re: invalid parameter to fcntl in drb.rb

From: GOTOU Yuuzou <gotoyuzo@...>
Date: 2003-12-06 12:49:20 UTC
List: ruby-dev #22172
In message <263A4B5D-27E2-11D8-B108-000393814512@mva.biglobe.ne.jp>,
 `Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>' wrote:
> > SSLでO_NONBLOCKにするとまずいというのは他のところでもおきている
> > ようなのですが、O_NONBLOCKにする必要はあるのでしょうか?
> >
> > # http://lists.community.tummy.com/pipermail/enbd/2001/000228.html
> > # http://mail.gnu.org/archive/html/monit-dev/2002-11/msg00069.html
> > # など
> 
> なんでNOBLOCKにしていたか思い出せません。
> SSLに限らずNONBLOCKしないようにしたら問題あるかなあ。
> 
> 抜いてcommitしてしまおうかしら。

出遅れてしまいましたが、SSL_accept や SSL_accept の際にもう
一度呼び出す必要があるケースがあるようなので、添付のパッチの
ように対処してみたところ、NetBSD 1.6ZC での test_drbssl は通
るようになりました。

先にこっちをコミットしたほうがいいですかね。

-- 
ごとうゆうぞう

Index: ossl_ssl.c
===================================================================
RCS file: /src/ruby/ext/openssl/ossl_ssl.c,v
retrieving revision 1.10
diff -u -p -r1.10 ossl_ssl.c
--- ossl_ssl.c	4 Nov 2003 23:48:13 -0000	1.10
+++ ossl_ssl.c	6 Dec 2003 12:29:38 -0000
@@ -435,6 +435,27 @@ ossl_ssl_setup(VALUE self)
     return Qtrue;
 }
 
+static void
+ossl_start_ssl(SSL *ssl, int (*func)())
+{
+    int ret;
+
+    for(;;){
+	if((ret = func(ssl)) > 0) break;
+	switch(SSL_get_error(ssl, ret)){
+	case SSL_ERROR_NONE:
+	    break;
+	case SSL_ERROR_WANT_WRITE:
+	case SSL_ERROR_WANT_READ:
+	case SSL_ERROR_WANT_X509_LOOKUP:
+	    rb_thread_schedule();
+	    continue;
+	default:
+	    ossl_raise(eSSLError, "SSL_accept:");
+	}
+    }
+}
+
 static VALUE
 ossl_ssl_connect(VALUE self)
 {
@@ -445,9 +466,7 @@ ossl_ssl_connect(VALUE self)
     Data_Get_Struct(self, SSL, ssl);
     cb = ossl_sslctx_get_verify_cb(ossl_ssl_get_ctx(self));
     SSL_set_ex_data(ssl, ossl_ssl_ex_vcb_idx, (void *)cb);
-    if (SSL_connect(ssl) <= 0) {
-        ossl_raise(eSSLError, "SSL_connect:");
-    }
+    ossl_start_ssl(ssl, SSL_connect);
 
     return self;
 }
@@ -462,9 +481,7 @@ ossl_ssl_accept(VALUE self)
     Data_Get_Struct(self, SSL, ssl);
     cb = ossl_sslctx_get_verify_cb(ossl_ssl_get_ctx(self));
     SSL_set_ex_data(ssl, ossl_ssl_ex_vcb_idx, (void *)cb);
-    if (SSL_accept(ssl) <= 0) {
-        ossl_raise(eSSLError, "SSL_accept:");
-    }
+    ossl_start_ssl(ssl, SSL_accept);
 
     return self;
 }
@@ -482,7 +499,9 @@ ossl_ssl_read(VALUE self, VALUE len)
     str = rb_str_new(0, ilen);
 
     if (ssl) {
+	TRAP_BEG;
         nread = SSL_read(ssl, RSTRING(str)->ptr, RSTRING(str)->len);
+	TRAP_END;
         if (nread < 0) {
             ossl_raise(eSSLError, "SSL_read:");
         }

In This Thread