Logo address

第1.2a版と過去の版との主な違い

目次

2002/10/03

factotum へのパッチはあてない。

Pegasus 1.2 ではユーザ web でサービスを行うために factotum にパッチをあてていましたが、筆者の理解不足でした。パッチは必要ありませんし、望ましくもありません。
mon を工夫すれば解決します。
Pegasus 1.2 と 1.2a の主な違いは mon.c です。
Pegasus の本体の違いは僅かで 、httpd を TLS で ユーザ none によってサービスできるようにしました。

1.1版は1.0版を Plan9 4ed に移植しただけで仕様上の違いは存在しない。
また 1.2a版は 1.2 版のパグ修正版であり、仕様上の違いはない。
以下に 1.2版と1.0版の違いを載せます。

HTTPS のサポート

Pegasus 1.2 版では HTTPS がサポートされています。
実際のサービスをどのユーザの名前で行うかに関しては3つの選択肢があります。
  1. hostowner の権限のままサービスを行う。
    これは危険であり採用しずらい。
  2. none に変身してサービスを行う。
    実際に HTTPS が必要になるのは CGI を使っての書き込みです。none の権限で書き込みアクセスを許すのは抵抗がある。
  3. ユーザ web に変身してサービスを行う。
    これが最も望ましい。

実行ハンドラの $target

Pegasus 1.0 では /etc/handler の中に
	# path    mimetype    ramfs    execpath arg ...
	*.http         -         0       $target
	*.html      text/html    1       $target
	*.dx_html   text/html    0       /bin/dx
の最後の行のように $target が無い場合には、/bin/dx の後に $target を付加して解釈したのですが、これは廃止します。$target が必要なら省略しないで書いて下さい。
ですから次のように書きます。
	# path    mimetype    ramfs    execpath arg ...
	*.http         -         0       $target
	*.html      text/html    1       $target
	*.dx_html   text/html    0       /bin/dx $target

namespace.cgi による名前空間の編成の時期

Pegasus 1.0 では CGI が実行される直前に namespace.cgi が参照されていました。
そのために実行ハンドラの中にユーザ定義のハンドラを使用できませんでした。(これはむしろバグと言った方がよいですね。)
Pegasus 1.2 ではハンドラを判定する段階で namespace.cgi を参照する事にしたので実行ハンドラの中にユーザ定義のハンドラが使用できるようになりました。

httpd の起動オプション

サーバモードで
	-a が廃止になり、代わりに -p が導入されました。
	-c が追加され HTTPS が使えるようになりました。
	-f が追加されました。

httpd のライブラリのバグ

Pegasus 1.0 はライブラリのバグのために、非常に混雑した際どい状況(例えば1秒間に10人程度の混み具合)で、httpd が無限ループに陥る事がありました。Plan9 第4版の httpd ライブラリでこのバグがとれているかもしれません。(あるいはまだ残っているかもしれません。)