壊れたメガネ

ホッチキスの達人の意識の高いブログ。

apacheモジュール フックの流れ

私は最近、Cを勉強したいということと、apacheのモジュールについて興味があったことから、apacheのモジュール作成について取り組んでいます。

まず、どういうフックがあってどういう順で処理されているのか知る必要があると思い、それぞれのハンドラでフック名をsyslogに吐き出すという単純なモジュールを作りました。

ただし、このモジュールで登録しているフックは登録できうる全てではなく、RUN_FIRSTなものは省きRUN_ALLなものに限りました。
RUN_ALL・RUN_FIRSTについてはApache 2.0 の hook 一覧をご覧ください。私自身このサイトで勉強させてもらっています。

以下にフック登録部のコードとそれにより吐き出されたsyslogをめも。


277 static void mpt_register_hooks(apr_pool_t *p)
278 {
279 ap_hook_pre_config(mpt_pre_config, NULL, NULL, APR_HOOK_MIDDLE);
280 ap_hook_open_logs(mpt_open_logs, NULL, NULL, APR_HOOK_MIDDLE);
281 ap_hook_post_config(mpt_post_config, NULL, NULL, APR_HOOK_MIDDLE);
282 ap_hook_pre_mpm(mpt_pre_mpm, NULL, NULL, APR_HOOK_MIDDLE);
283 ap_hook_child_init(mpt_child_init, NULL, NULL, APR_HOOK_MIDDLE);
284 ap_hook_pre_connection(mpt_pre_connection, NULL, NULL, APR_HOOK_MIDDLE);
285 ap_hook_header_parser(mpt_header_parser, NULL, NULL, APR_HOOK_MIDDLE);
286 ap_hook_create_request(mpt_create_request, NULL, NULL, APR_HOOK_MIDDLE);
287 ap_hook_post_read_request(mpt_post_read_request, NULL, NULL, APR_HOOK_MIDDLE);
288 ap_hook_access_checker(mpt_access_checker, NULL, NULL, APR_HOOK_MIDDLE);
289 ap_hook_fixups(mpt_fixups, NULL, NULL, APR_HOOK_MIDDLE);
290 ap_hook_insert_filter(mpt_insert_filter, NULL, NULL, APR_HOOK_MIDDLE);
291 ap_hook_log_transaction(mpt_log_transaction, NULL, NULL, APR_HOOK_MIDDLE);
292 }


Jan 17 00:08:37 localhost mod_mpt[21372]: hook_pre_connection
Jan 17 00:08:37 localhost mod_mpt[21372]: hook_create_request
Jan 17 00:08:37 localhost mod_mpt[21372]: hook_post_read_request
Jan 17 00:08:37 localhost mod_mpt[21372]: hook_header_parser
Jan 17 00:08:37 localhost mod_mpt[21372]: hook_access_checker
Jan 17 00:08:37 localhost mod_mpt[21372]: hook_fixups
Jan 17 00:08:37 localhost mod_mpt[21372]: hook_insert_filter
Jan 17 00:08:37 localhost mod_mpt[21372]: hook_log_transaction

追記
apache初期化時のフックによるログは載せていません。
ap_hook_pre_mpmとかそのあたりのやつです。