Apache/リクエスト処理を読む
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
#contents
*はじめに [#n20693c7]
[[Apache/設定ファイル読み込みを読む]]ではserver/main.cのa...
なお、MPMはpreforkを対象とします。
*接続ポートのセットアップ [#zf1bd886]
実はap_mpm_run関数が呼ばれた時点ですでに受信ソケットの設...
**ap_set_listener [#kbd2ec3d]
受信ポートの指定はListenディレクティブで行いますがListen...
static const command_rec prefork_cmds[] = {
...
LISTEN_COMMANDS,
#define LISTEN_COMMANDS \
...
AP_INIT_TAKE_ARGV("Listen", ap_set_listener, NULL, RSRC_...
"A port number or a numeric IP address and a port numb...
ap_set_listener関数はserver/listen.cに書かれています。ap_...
alloc_listener関数ではまず指定されたアドレスとポートの組...
static int prefork_pre_config(apr_pool_t *p, apr_pool_t ...
{
...
ap_listen_pre_config();
AP_DECLARE(void) ap_listen_pre_config(void)
{
old_listeners = ap_listeners;
ap_listeners = NULL;
pre_configフックはap_mpm_run関数が呼ばれるまでに2回呼ばれ...
**ap_setup_listeners [#t3e4737a]
次にopen_logsフックで呼ばれるprefork_open_logs関数を眺め...
ap_setup_listeners関数に移ります。まず、サーバのプロトコ...
open_listeners関数では、まだ各ソケットはアクティブではな...
*リクエストを受け取るまで [#f5884993]
それではap_mpm_run関数を見ていくことにしましょう。prefork...
初めの方は飛ばして、one_processが1かどうかで処理が分かれ...
最初はis_gracefulは0なのでstartup_children関数が呼び出さ...
ap_hook_pre_mpm(ap_create_scoreboard, NULL, NULL, APR_HO...
とpre_mpmのフックとしてap_create_scoreboard関数が呼び出さ...
startup_children関数は引数分のmake_child関数を呼ぶだけ((...
make_child関数ではその名の通り子プロセスを作っています。...
child_main関数ではいろいろ初期化を行った後、リクエスト待...
*リクエストの処理 [#p2d3c138]
include/http_connection.hに書いてありますがcreate_connect...
ap_process_connection関数はserver/connection.cに書かれて...
pre_connectionフックをかけているモジュールを探してみると...
process_connectionフックの処理はhttpモジュール(modules/h...
**ap_read_request [#f50be4f4]
ap_read_request関数はまたserverディレクトリに戻ってきて、...
次にread_request_line関数を呼び出してリクエストを取得して...
ap_read_request関数に戻ります。assbackwardsはinclude/http...
**ap_process_request [#g6ff8d08]
ap_process_request関数はmodules/http/http_request.cに書か...
***ap_process_request_internal [#pb721334]
ap_process_request_internal関数はserver/request.cに書かれ...
次にmap_to_storageフックが呼ばれています。coreモジュール...
次にheader_parserフックが呼ばれています。setenvifモジュー...
次にアクセス権限のチェックが行われています。ap_satisfies...
次にtype_checkerフックが呼ばれています。mimeモジュールやn...
最後にfixupsフックを呼び出しています。いろいろなモジュー...
***ap_invoke_handler [#b3f64fdc]
ap_invoke_handler関数はserver/config.cに書かれています。
まずinsert_filterフックが呼び出されています。その後、hand...
各ハンドラは生成されたデータをアウトプットフィルタに渡し...
:ap_core_output_filter|AP_FTYPE_NETWORK、server/core_filt...
:ap_content_length_filter|AP_FTYPE_PROTOCOL、server/proto...
:ap_http_header_filter|AP_FTYPE_PROTOCOL、modules/http/ht...
include/util_filter.hやserver/util_filter.cを眺めるとフィ...
*おわりに [#c7c3bb88]
今回はApacheのリクエスト処理を読んでみました。わかったこ...
-各所でフックを呼び出すことでモジュールが動作を変更する機...
-というわけでいつの間にか設定されている・設定が変更されて...
-いろいろなファイルを飛び回るので探すのが大変:-<
といったところです。それではみなさんもよいコードリーディ...
終了行:
#contents
*はじめに [#n20693c7]
[[Apache/設定ファイル読み込みを読む]]ではserver/main.cのa...
なお、MPMはpreforkを対象とします。
*接続ポートのセットアップ [#zf1bd886]
実はap_mpm_run関数が呼ばれた時点ですでに受信ソケットの設...
**ap_set_listener [#kbd2ec3d]
受信ポートの指定はListenディレクティブで行いますがListen...
static const command_rec prefork_cmds[] = {
...
LISTEN_COMMANDS,
#define LISTEN_COMMANDS \
...
AP_INIT_TAKE_ARGV("Listen", ap_set_listener, NULL, RSRC_...
"A port number or a numeric IP address and a port numb...
ap_set_listener関数はserver/listen.cに書かれています。ap_...
alloc_listener関数ではまず指定されたアドレスとポートの組...
static int prefork_pre_config(apr_pool_t *p, apr_pool_t ...
{
...
ap_listen_pre_config();
AP_DECLARE(void) ap_listen_pre_config(void)
{
old_listeners = ap_listeners;
ap_listeners = NULL;
pre_configフックはap_mpm_run関数が呼ばれるまでに2回呼ばれ...
**ap_setup_listeners [#t3e4737a]
次にopen_logsフックで呼ばれるprefork_open_logs関数を眺め...
ap_setup_listeners関数に移ります。まず、サーバのプロトコ...
open_listeners関数では、まだ各ソケットはアクティブではな...
*リクエストを受け取るまで [#f5884993]
それではap_mpm_run関数を見ていくことにしましょう。prefork...
初めの方は飛ばして、one_processが1かどうかで処理が分かれ...
最初はis_gracefulは0なのでstartup_children関数が呼び出さ...
ap_hook_pre_mpm(ap_create_scoreboard, NULL, NULL, APR_HO...
とpre_mpmのフックとしてap_create_scoreboard関数が呼び出さ...
startup_children関数は引数分のmake_child関数を呼ぶだけ((...
make_child関数ではその名の通り子プロセスを作っています。...
child_main関数ではいろいろ初期化を行った後、リクエスト待...
*リクエストの処理 [#p2d3c138]
include/http_connection.hに書いてありますがcreate_connect...
ap_process_connection関数はserver/connection.cに書かれて...
pre_connectionフックをかけているモジュールを探してみると...
process_connectionフックの処理はhttpモジュール(modules/h...
**ap_read_request [#f50be4f4]
ap_read_request関数はまたserverディレクトリに戻ってきて、...
次にread_request_line関数を呼び出してリクエストを取得して...
ap_read_request関数に戻ります。assbackwardsはinclude/http...
**ap_process_request [#g6ff8d08]
ap_process_request関数はmodules/http/http_request.cに書か...
***ap_process_request_internal [#pb721334]
ap_process_request_internal関数はserver/request.cに書かれ...
次にmap_to_storageフックが呼ばれています。coreモジュール...
次にheader_parserフックが呼ばれています。setenvifモジュー...
次にアクセス権限のチェックが行われています。ap_satisfies...
次にtype_checkerフックが呼ばれています。mimeモジュールやn...
最後にfixupsフックを呼び出しています。いろいろなモジュー...
***ap_invoke_handler [#b3f64fdc]
ap_invoke_handler関数はserver/config.cに書かれています。
まずinsert_filterフックが呼び出されています。その後、hand...
各ハンドラは生成されたデータをアウトプットフィルタに渡し...
:ap_core_output_filter|AP_FTYPE_NETWORK、server/core_filt...
:ap_content_length_filter|AP_FTYPE_PROTOCOL、server/proto...
:ap_http_header_filter|AP_FTYPE_PROTOCOL、modules/http/ht...
include/util_filter.hやserver/util_filter.cを眺めるとフィ...
*おわりに [#c7c3bb88]
今回はApacheのリクエスト処理を読んでみました。わかったこ...
-各所でフックを呼び出すことでモジュールが動作を変更する機...
-というわけでいつの間にか設定されている・設定が変更されて...
-いろいろなファイルを飛び回るので探すのが大変:-<
といったところです。それではみなさんもよいコードリーディ...
ページ名: