From: Hiroshi NAKAMURA Date: 2011-06-22T22:53:17+09:00 Subject: [ruby-dev:43874] [Ruby 1.9 - Bug #4416][Closed] OpenSSL::SSL::Session#session_new_cb Issue #4416 has been updated by Hiroshi NAKAMURA. Status changed from Assigned to Closed Target version changed from 1.9.2 to 1.9.3 r32204で、ご提案いただいたとおりの修正を入れました。Rubyオブジェクトからの参照があり、OpenSSLに何を返しても、session_new_cbに渡されたセッションはクリアされないのですから、0や1を返し分けても無意味、なので、OpenSSL側での整合性を取るために、常に0を返して参照数を適切に調整すべき、ということですね。やっと理解しました。ありがとうございました。 結果として、session_new_cbのコールバックについて、「返す値に意味はない」という変更になりましたが、もとよりバグですので、修正として扱おうと思います。ドキュメントに影響が出てしまい恐縮です。 ---------------------------------------- Bug #4416: OpenSSL::SSL::Session#session_new_cb http://redmine.ruby-lang.org/issues/4416 Author: Ippei Obayashi Status: Closed Priority: Normal Assignee: Hiroshi NAKAMURA Category: ext Target version: 1.9.3 ruby -v: ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux] =begin SSL_CTX_sess_set_new_cb で渡すコールバックの返り値は、 「0 を返すと新しく作られた SSL_SESSION のリファレンスカウンタの 値を減らし(て SSL_SESSION を解放し)、 それ以外を返すとリファレンスカウンタを減らさない」となっています。 しかし、ext/openssl/ossl_ssl.c:ossl_sslctx_session_new_cb ではその中で リファレンスカウンタの値を増やしているにもかかわらず1を返す場合があります。 ここは常に0を返すべきではないでしょうか? =end -- http://redmine.ruby-lang.org