第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つの選択肢があります。
- hostowner の権限のままサービスを行う。
これは危険であり採用しずらい。
- none に変身してサービスを行う。
実際に HTTPS が必要になるのは CGI を使っての書き込みです。none の権限で書き込みアクセスを許すのは抵抗がある。
- ユーザ 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 ライブラリでこのバグがとれているかもしれません。(あるいはまだ残っているかもしれません。)