ruby-trunk-changes r32187 - r32202

今日は拡張ライブラリ openssl の不具合修正やリファクタリングが多くありました。また clang -O で ruby がビルドできるようになったそうです。

kosaki:r32187 2011-06-21 21:31:17 +0900

一旦入れて revert した rb_thread_io_blocking_region() を internal.h へ移動する修正です。今度は socket のビルド時にソースディレクトリをインクルードファイルのサーチパスに入れるようにする修正も含めています。

nahi:r32188 2011-06-21 21:58:37 +0900

WEBrick にて keep_alive? が有効なのに chencked? が false でかつ content-length が設定されていないレスポンスを返した時にソケットを切断するようにしています。

nahi:r32189 2011-06-22 01:33:06 +0900

OpenSSL::X509::Storel#add_crl を2度呼ぶとエラーになるというテストが RedHat の OpenSSL にはパッチが適用されていて、エラーにならなくなっているのでライブラリのバージョンで分岐してテストをパスさせています。 [Bug #4122] [Bug #4554]

svn:r32190 2011-06-22 01:33:11 +0900

version.h の日付更新。

nahi:r32191 2011-06-22 01:34:16 +0900

r32190 の ChangeLog のエントリにチケット番号の参照を追加しています。

nahi:r32192 2011-06-22 02:44:44 +0900

Net::HTTP.post_form で POST の要求を作ると uri の query 部分('?' 以降のところ)が無視されてしまうのでそれもそのまま渡すようにしています。

tenderlove:r32193 2011-06-22 03:04:41 +0900

test/psych/test_nil.rb のメソッド呼び出しのかっこを追加して警告除去。

tenderlove:r32194 2011-06-22 03:22:54 +0900

Psych で YAML から循環参照を持つオブジェクトを load することができるようにしています。

nahi:r32195 2011-06-22 12:40:08 +0900

openssl のテストのリファクタリングSSL::Session についてのテストを test/openssl/test_ssl_session.rb に移動しています。

nahi:r32196 2011-06-22 12:43:38 +0900

OpenSSL::SSL::Session#to_der で 10240 バイト以上の結果を作れないのを修正。固定長のバッファを使っていたのを i2d_SSL_SESSION() を一度読んでサイズを確定してからバッファを動的に確保するようにしています。

emboss:r32197 2011-06-22 14:48:44 +0900

openssl のテストのいくつかで MiniTest::Unit::TestCase を直接継承していたものを Test::Unit::TestCase を継承するように修正しています。 [ruby-core:37275]

emboss:r32198 2011-06-22 15:04:27 +0900

OpenSSL::SSLContext の初期化時に SSL_CTX_set_mode() に SSL_MODE_RELEASE_BUFFERS というビットフラグを(もし定義されていたら)渡すようにしています。 [Feature #4672] [ruby-core:36127]

emboss:r32199 2011-06-22 17:41:08 +0900

OpenSSL はエラー時にエラーキューにエラー情報が詰められて、これを適切に取り出してあげないと次の(関係ない)ライブラリの関数の呼び出しがエラーになってしまったりするので、ossl_raise() というエラー情報の取り出し(OSSL_BIO_reset)を含む例外発生関数を利用するようにしたり、OSSL_BIO_reset() マクロにエラーリセット処理をまとめたりしています。またテストでもエラー情報が残っていないことの確認を追加しています。

nahi:r32200 2011-06-22 18:24:31 +0900

えー詳細はわかりませんが OpenSSL::SSL::SSLContext には OpenSSL からイベントがあった時のコールバックを登録できるようで、そのうち session_remove のコールバックで呼び出している関数が間違っていた(session_new 用のを呼んでた?)のを修正しています。これは誰も使ってなかったんでしょうねぇ。

naruse:r32201 2011-06-22 20:00:24 +0900

clang -O でコンパイルした時の最適化避けのために volatile の変数宣言の追加などをしています。 MEMCPY によるコピーを for ループにしているところもあります。これは clang ではどう問題だったのだろう。ともかくこれで ruby は clang 3.0 で -O オプションつきでコンパイルして動くようになったそうです。

kosaki:r32202 2011-06-22 21:30:22 +0900

r32187 で socket のビルドの依存関係で internal.h のパスを指定するための変数名の間違いを修正。 $(topdir) -> $(top_srcdir)