namazu-ml(avocado)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Request for Win32 user (Re: namazu-112-proto-9.tar.gz (Re: namazu-112-proto-8.tar.gz)



清水@住友林業です。

# 自己フォローですが、最後に Win32 な方にお願いがあります。
# なにとぞ、ご協力をお願いします m(__)m

私は書きました。

> ただ、ICS は cgi / SSI の出力結果を parse する際の動作に bug があり
> namazu.cgi で検索結果が 0 件の際に、ブラウザにデータを返さないので
> (だんまりになる)困ってます。サーバ側のログにはエラーは全く出てない
> ので、早急に Apache v1.2.5 for OS/2 を試したいのですが、時間と環境が
> それを許さない...

また、OS/2 ICS httpd だと、上記の不具合(検索結果が 0 件のときにブラ
ウザにデータが返らない)の他に、cgi の出力の最後尾の一部のデータがブ
ラウザに返らない、という現象があります。だいたい、検索結果が 20 件以
上の場合に表示される、

 Page: [1] [2] .... [20] ....

の行の途中までしか表示されないことがあります。これは頻繁に再現します
が、100% 再現するわけでもないのです。で、このケースでは、次の画面(
同じ検索結果の次のページや、別の検索結果)の最上部に、前の画面の送ら
れなかったデータが表示される(ブラウザに送信される)という現象が起こ
っています。

# これは、ICS の parse の bug に起因すると認識しています。
# nph な cgi として動かせば、ブラウザにまともに返ることは確認済み。


閑話休題。

さっき、namazu-1115 の srnmz.c を見ていたら、cgi での出力に

>  static char *MIME_HEADER = "Content-type: text/html\r\n\r\n";

と改行に CR+LF を使っている行が1つだけあります。
それ以外は

> static char *HIT2 = " 個の項目が見つかりました。</STRONG></P>¥n¥n";

などと、改行が LF だけになってます。

たしか、httpd では改行は CR + LF とすることになってますよね?

ちなみに、OS/2 の emx gcc では、¥n を CR+LF に変換してくれるので、
ソース中で ¥n だけにしても、httpd に渡る際には CR+LF になっています。
\r はそのまま、CR になります。

# つまり、ソースに ¥r¥n と書かれていると、CR CR LF になっちまう :-(

## \n を CR+LF に変換させないオプションもあるのですが、いずれにせよ
## 改行が ¥n か ¥r¥n に統一されてないと、出力がヘンになる。

で、srnmz.c で cgi に出力される際の ¥r¥n と ¥n の混在をやめるべく。

>  static char *MIME_HEADER = "Content-type: text/html\r\n\r\n";

の行を、

>  static char *MIME_HEADER = "Content-type: text/html\n\n";

と修正しただけで、上記の ICS の bug に起因する不具合は、とりあえず回
避できました。

で、質問と調査希望なのですが、

[質問]

1. Solaris とか Linux 上の httpd (Apache ?) では、cgi の出力に CR+LF 
   と LF が混在していても特に問題ないのでしょうか?

2. OS/2 の ICS と同様の bug が出る httpd はないでしょうか?


[希望]

OS/2 (および Win32) の場合、

>  static char *MIME_HEADER = "Content-type: text/html\r\n\r\n";

は

>  static char *MIME_HEADER = "Content-type: text/html\n\n";

の方が望ましい(¥n だけでも出力コードは CR+LF になるハズ)と思うので、
Win32 で gcc の環境がある方は、これで不具合がでるかどうか試していただ
けないでしょうか。

よろしくお願いします。

end
--
  住友林業株式会社  情報システム部   清水 和佳
 
  TEL: +81-3-5322-6672  FAX: +81-3-5322-6658  Niftyserve: XLW01034
  e-mail: <kshimz@xxxxxxxxx>