[Namazu-users-ja 1244] Re: cgi.c "SERVER_SOFTWARE" による処理分岐について

Tadamasa Teranishi yw3t-trns @ asahi-net.or.jp
2013年 3月 15日 (金) 08:07:53 JST


寺西です。

(2013/03/12 16:28), NOKUBI Takatsugu wrote:
>  このSERVER_SOFTWAREを見る処理はどういう経緯でついたんでしたっけ。
> ChangeLog, CVSのログには記述が見当たらないのでちょっとわからないでいます。

私が開発に参加する前のことなので、詳しいことは分かりませんが、
cgi を cgi として起動した場合か否かのチェックだと思います。

通常、QUERY_STRING が NULL になるはずですが、
一部の(とは言えなくなっているかもしれませんが)Webサーバだと
/cgi-bin/namazu.cgi と呼び出すと、QUERY_STRING が NULL に
なるものがあります。
(/cgi-bin/namazu.cgi? だと QUERY_STRING が "" になる)

そのため、QUERY_STRING が NULL だから cgi として起動していない
とは判断できないため、SERVER_SOFTWARE でそういう Web サーバ
かどうかを補助的にチェックしているということかと思います。
(SERVER_SOFTWARE に何か設定されていればという判定でも
よさそうですが、ま、そこは念のため動作が確認されているもの
だけ許可しているという感じなのだと思います。)

>  とりあえず、assertで終了するだけでなく、SERVER_SOFTWAREが定義されてい
> たらその中身も出力するようにした方がいいかな、と思いました。

char *server = getenv("SERVER_SOFTWARE");
if (!server) {
    nmz_warn_printf("unknown SERVER_SOFTWARE : %s\n", server);
}
assert(0);

って感じですかね。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns @ asahi-net.or.jp
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E


Namazu-users-ja メーリングリストの案内