[#36686] 1.1 < 61.1 - 60.0 — Shin-ichiro HARA <sinara@...>

原です。

19 messages 2002/12/06

[#36770] www.ruby-lang.orgリニューアル準備のお知らせ — TADA Tadashi <sho@...>

ruby-lang.orgのwebmasterチームでは、タイムリーな情報提供と使いやすい

11 messages 2002/12/16

[ruby-list:36721] Re: ruby 1.6.8 preview3

From: matz@... (Yukihiro Matsumoto)
Date: 2002-12-09 10:21:02 UTC
List: ruby-list #36721
まつもと ゆきひろです

In message "[ruby-list:36720] Re: ruby 1.6.8 preview3"
    on 02/12/09, m_seki@mva.biglobe.ne.jp <m_seki@mva.biglobe.ne.jp> writes:

|> > rubyの問題かどうか切り分けられていないのですが、
|> > dRuby + OpenSSL のテストでインタプリタが終了しません。

私のところでは

  openssl/buffering.rb

が無限ループに落ちてます。

 def do_write(s)  
    @wbuffer = "" unless defined? @wbuffer
    @wbuffer << s
    if @sync or @wbuffer.size > BLOCK_SIZE or idx = @wbuffer.rindex($/)
      remain = idx ? idx + $/.size : @wbuffer.length
      nwritten = 0
      while remain > 0
        nwrote = syswrite(@wbuffer[nwritten,remain])
        remain -= nwrote
        nwritten += nwrote
      end
      @wbuffer = ""
    end
  end

その原因はsyswrite()が-1を返すのでremainが増えちゃうからです。
で、ソースであるossl_ssl.cのssl_write()を見ても負の数は返さ
ないように見えるのですが、うまくいきません。が、考えてみると
nwriteはsize_tですので、size_tがunsignedな処理系では負の数の
チェックが出来ません。

これを修正する(size_t -> int)とexit!がなくてもちゃんと終了す
るようです。

In This Thread