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

NOKUBI Takatsugu knok @ daionet.gr.jp
2013年 3月 26日 (火) 17:48:39 JST


  反応が遅くてすみません。

At Fri, 15 Mar 2013 08:07:53 +0900,
Tadamasa Teranishi wrote:
> 私が開発に参加する前のことなので、詳しいことは分かりませんが、
> cgi を cgi として起動した場合か否かのチェックだと思います。

  ああ、少し思い出しました。かなり昔のnamazuコマンドはcgiも兼ねて動作す
る仕様だったのですが、CGIの仕様でGETの引数をそのままコマンドラインオプ
ションとして指定することが可能なので、後になってcgiを分離するという変更
をしたのを覚えています。

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

  ここの決定は誰がどのようにしたのか、記憶にありません…サーバー実装と
設定によっては、任意の内容に変更できそうな気がします(apacheのSetEnvと
か)が、まあ今まで問題が顕著化しなかったので、

> >  とりあえず、assertで終了するだけでなく、SERVER_SOFTWAREが定義されてい
> > たらその中身も出力するようにした方がいいかな、と思いました。
> 
> char *server = getenv("SERVER_SOFTWARE");
> if (!server) {
>     nmz_warn_printf("unknown SERVER_SOFTWARE : %s\n", server);
> }
> assert(0);
> 
> って感じですかね。

  これぐらいの修正でよいと思います。


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