Diary-nagataka-シリコンバレーで働きたい!という夢への日々

外資ITで働くエンジニアが趣味や日々の事など書いてます(技術の話は別ブログ http://wanna-be-geek.seesaa.net/ )

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告
  3. このエントリーを含むはてなブックマーク

[Apacheコードリーディング]ap_process_request

httpd-2.2.18/modules/http/http_core.c内の、ap_process_request()を読んだ。


static int ap_process_http_connection(conn_rec *c)
{
request_rec *r;
apr_socket_t *csd = NULL;

/*
* Read and process each request found on our connection
* until no requests are left or we decide to close.
*/
クライアントとの接続が完了した後、リクエストを読む処理

ap_update_child_status(c->sbh, SERVER_BUSY_READ, NULL);
while ((r = ap_read_request(c)) != NULL) {

c->keepalive = AP_CONN_UNKNOWN;
/* process the request if it was read without error */

ap_update_child_status(c->sbh, SERVER_BUSY_WRITE, r);
if (r->status == HTTP_OK)
ap_process_request(r);

if (ap_extended_status)
ap_increment_counts(c->sbh, r);

if (c->keepalive != AP_CONN_KEEPALIVE || c->aborted)
break;

ap_update_child_status(c->sbh, SERVER_BUSY_KEEPALIVE, r);
apr_pool_destroy(r->pool);

if (ap_graceful_stop_signalled())
break;

if (!csd) {
csd = ap_get_module_config(c->conn_config, &core_module);
}
apr_socket_opt_set(csd, APR_INCOMPLETE_READ, 1);
apr_socket_timeout_set(csd, c->base_server->keep_alive_timeout);
/* Go straight to select() to wait for the next request */
}

return OK;


}



ap_read_requestを呼んでリクエスト構造体を取得。
取得したリクエスト構造体を引数に、ap_process_requestを呼び、リクエストを処理させているという事がわかった。

ToDo
・ap_process_requestを読む
・リクエスト構造体の中身を見る(ap_read_request)
スポンサーサイト
  1. 2012/01/15(日) 19:38:41|
  2. Apache
  3. | トラックバック:0
  4. | コメント:0
  5. このエントリーを含むはてなブックマーク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。