Fix ssltest.exe hangs when MinGW's openssl.exe exists #468
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
MinGW の openssl.exe が存在すると、
axTLS の ssltest.exe のテストで固まる件に対応してみました。
(関連 #467 (comment))
固まる openssl.exe は以下のものになります。
C:\msys64\mingw64\bin\openssl.exe
C:\msys64\mingw32\bin\openssl.exe
(バージョンを 1.0.2 から 1.1.1b に更新しても同じでした)
以下の openssl.exe は固まりません (MSYSのもの)。
C:\msys64\usr\bin\openssl.exe
(バージョンを 1.0.2 から 1.1.1b に更新しても同じでした)
また、AppVeyor 上のテストでは固まらないことから、
mintty 上でテストしているときにのみ固まると思われます。
それで、探したところ、以下の情報がありました。
https://stackoverflow.com/questions/9450120/openssl-hangs-and-does-not-exit
(winpty をかませると固まらない)
Document the undocumented -X switches rprichard/winpty#103
(winpty は、-Xallow-non-tty -Xplain オプションを付けると、
標準出力のリダイレクトに対応できる)
Does winpty work with pipes? rprichard/winpty#101
(winpty は、標準入力のリダイレクトには対応できないため、
if [ -t 0 ]; then
を使って判別して、リダイレクトがないときだけ winpty をかませるようにする)
以上のことから、試行錯誤でパッチを作成しました。
しかし、winpty に -Xallow-non-tty オプションを付けて実行すると、
実行後に mintty 上でキー入力がエコーされない状態になりました。
それで、テスト後に (sys-system "stty sane") を実行して、
端末をリセットするようにしました。
また、appveyor.yml に winpty のインストールを追加しました。
<テスト結果>
https://ci.appveyor.com/project/Hamayama/gauche/builds/24155999