ACCF_HTTP(9)

名称
accf_http - ある完全な HTTP リクエストの到着までの間の入力接続バッファ

書式
options INET options ACCEPT_FILTER_HTTP kldload accf_http

解説
これは HTTP 入力接続を受け取るために accept() が使用されるソケット上に配置されるためのフィルタです。

これは完全な HTTP/1.0 または HTTP/1.1 の HEAD または GET リクエストが カーネルによってバッファされるまでの間に、アプリケーションが accept() を介して接続された記述子を受け取ることを防止します。

HTTP/1.0 または HTTP/1.1 の HEAD または GET リクエスト以外の何かが 受け取られた場合には、カーネルはアプリケーションが accept() を介して接続記述子を受け取ることを可能にします。

accf_http の効用は、サーバがそのリクエストの初期の文法解析を実行する前に コンテキストの切り替えを何回か行なう必要が無いようにすることです。 Apache のようなサーバのフォーク前のアクティブプロセス数を低く抑え、 select(), poll() または kevent() のようなインタフェースによって管理されることが必要なファイル記述子の組の 大きさを減少させることによって、 入力リクエストのために必要な CPU 利用を効果的に減少させます。

カーネルの中に INET オプションが既にコンパイルされている場合には、 accf_http カーネルオプションは kldload(8) を介して実行時に有効化することができるモジュールもあります。

使用例
ACCEPT_FILTER_HTTP がカーネルコンフィグファイルに含まれているか、 accf_http モジュールがロードされていると仮定して、これはソケット sok 上の http accept フィルタを有効化します。

    	struct accept_filter_arg afa;
    	bzero(&afa, sizeof(afa));
    	strcpy(afa.af_name, "httpready");
    	setsockopt(sok, SOL_SOCKET, SO_ACCEPTFILTER, &afa, sizeof(afa));

関連項目
setsockopt(2), accept_filter(9)

歴史
accept フィルタ機構および accf_http フィルタは FreeBSD 4.0 で導入されました。

作者
このマニュアルページおよびこのフィルタは Alfred Perlstein が書きました。