static apr_status_t hogehoge_filter(ap_filter_t *f, apr_bucket_brigade *bb) {
request_rec *r = f->r;
my_ctx *ctx = f->ctx;
いくつかのフィルタのコードを読んでみると、どうも一回のフィルタの呼び出しではストリームが終わらないことがあるらしい。だから、ステータスをf->ctxに保持する。
ctxはリクエストごとに初期化されるように見える。だから
- if (!ctx) { 〜 }で存在チェック
- ctxがなかったら、ctxを生成して、ストリームが始まったものとして処理をする
- ctxがあったら、ストリームの途中として処理をする
ctxはApacheがてきとーに破棄してくれてるのかな?