Concurrent Clean : CGI : POSTしたときに、CGIの応答が完了しない

POSTで投げたときに、CGIの応答が完了しないで、タイムアウトするような動きをする。
場合によっては、ページが完全に描画されないこともある。

      • -

telnetで確認してみると、どうも、チャンク通信で1つめのチャンクが終わった所で、後続のチャンクが送信されてこずにタイムアウトしてしまう模様。
チャンク通信にならなければ、正常に画面が表示される(が、POSTの場合は、ブラウザはまだ通信中のような挙動をしているが)。

      • -

やはり、GETならば、チャンク通信になっても正しく動作しているようす。
POSTの場合は、標準入力からデータを読み込んでいるので、その処理が入ることがなにか影響を能えているのかもしれない。
ちょっとなやましい問題だなぁ。

      • -

Cleanのファイル操作関連のソースは、Linuxについては、「ifileI03.s, ufileI02.c」にあるので、このソースを眺めてみる。
あと、「scon.c」にも関連する関数があった。

      • -

apache2のエラーログを見たら

 (104): ap_content_length_filter: apr_bucket_read() failed, referer: http://localhost:8090/edit/sha%2523rp/

という行があった。

      • -

http://forge.novell.com/pipermail/apache-dev/2004-December/000196.html
同じ現象のようだ。 よくみたらちょっとだけ違う。

      • -

http://www.mail-archive.com/apache-fp@lists.joshie.com/msg00467.html
こっちが近い。

      • -

ためしに、標準入力を全く読まないようにしてみた所、現象は変化しなかった。
もしかして、入力を全て読んでいないで、残っているのがまずいのか?

      • -

前に作ったCGIのテストプログラムで試してみたら、POSTの処理に問題はなさそうだった。
今作っているプログラムの書き方に問題があるのかな?