groonga/groonga — pull request #47 by t-shm (2012-12-09 01:47:18+00:00)
Title: add O_BINARY flag to fix windows http server problem.

日本語で失礼させていただきます。

Windows環境にてHTTPサーバモードでgroongaを起動してブラウザからアクセスすると、groongaプロセスがCPUを100％近く使用し続けてしまう現象が起こったため、原因を調査・修正させていただきました。

原因となっていたのはpng等の画像ファイルをクライアントに返している処理でした。Windows環境では、open関数はファイルをテキストモードでオープンしてしまいます。これにより、対象ファイルが画像等のバイナリファイルであった場合、正しく内容を読み出すことができずにgrn_bulk_put_from_file関数内で無限ループが発生してしまっていました。
open関数にO_BINARYフラグを付与し、バイナリモードでファイルをオープンすることで、上記の問題を回避できることを確認いたしました。