Issue #9881 has been updated by Akira T…
まず ssl.sync_close = true の意味は、
ssl.close としたときに ssl に入っている
IO も同時に close するようにする、という意味です。
これがないと、test_verify_result で
sock = TCPSocket.new(“127.0.0.1”, port) として作ったソケットを close し忘れることになります。
close するようにしたら刺さるようになるというのは
ちょっと原因が想像しがたいのですが、
とりあえず刺さっているのはどこでしょうか。
刺さっている場所は ssl.sync_close = true そのものじゃなくて、それよりも後ではないかと思うのですが。
あと思いつくこととしては、test_verify_result は 3つのテストが入っている感じなので、
メソッドを 3つに分けてみるとかでしょうか。
それも含め、再現スクリプトを最小化してみるというのはどうでしょうか。
Bug #9881: stuck in test/openssl/test_ssl.rb on Windows
- Author: Usaku NAKAMURA
- Status: Assigned
- Priority: Normal
- Assignee: Akira T.
- Category: test
- Target version: current: 2.2.0
- ruby -v: ruby 2.2.0dev (2014-05-29 trunk 46235) [x64-mswin64_100]
- Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN
r46223以降、WindowsにおいてOpenSSL::TestSSL#test_verify_resultで刺さってしまうようになりました。
(CI等で確認できます)
調べてみたところ、この変更時に追加された、
ssl.sync_close = true
の1行が問題のようです。
よくわからないのですが、他のテストメソッドはこれがあっても問題ありません。
意味がわかってないので私にはなんとも言えないのですが、何かわかりますでしょうか?