ウォンツテック

そでやまのーと

apache

ap_process_http_connectionの処理に戻ってap_read_requestをした後のwhileの中を見てみる 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…

昨日の続き ap_read_request /server/protocol.c apr_brigade_destroy(tmp_bb); r->status = HTTP_OK; /* Until further notice. */ brigadeのtmp_bbを削除してstatusをHTTP_REQUEST_TIME_OUTからHTTP_OKに変えている。requestをget出来たのでHTTP statusコ…

apache reading さて、今日からはgdbを使って実際に動かしながらapacheのソースを読む事にしたのでまずはgdbでapache探索出来るように下準備をする。http://httpd.apache.org/dev/debugging.html まずはgdbで使うsymbol infoが埋め込まれた実行ファイルが必…

/server/util_filter.c フィルターの実装を見てみる。まずはフィルター名の格納方法から typedef struct { int c; filter_trie_node *child; } filter_trie_child_ptr; struct filter_trie_node { ap_filter_rec_t *frec; filter_trie_child_ptr *children; …

bucketのheapに関する操作 heap_bucket_read static apr_status_t heap_bucket_read(apr_bucket *b, const char **str, apr_size_t *len, apr_read_type_e block) { apr_bucket_heap *h = b->data; *str = h->base + b->start; *len = b->length; return APR…

・write関連続き apr_brigade_writev APU_DECLARE(apr_status_t) apr_brigade_writev(apr_bucket_brigade *b, apr_brigade_flush flush, void *ctx, const struct iovec *vec, apr_size_t nvec) struct iovec *vec全てをbrigade(bucket)に書き込む関数で主に…

bucketメモリ操作関連 apr_bucket_simple_copy APU_DECLARE_NONSTD(apr_status_t) apr_bucket_simple_copy(apr_bucket *a, apr_bucket **b) apr_bucket_allocを呼び出し*bにセットしている。 apr_bucket_simple_split apr_bucket_simple_split(apr_bucket *a…

/srclib/apr-util/buckets/apr_brigade.c apr_buckets.hで宣言されていたbrigadeの操作関数郡 APU_DECLARE(apr_status_t) apr_brigade_cleanup(void *data) { apr_bucket_brigade *b = data; apr_bucket *e; while (!APR_BRIGADE_EMPTY(b)) { e = APR_BRIGAD…

/srclib/apr-util/include/apr_buckets.h からbucket操作関数の概要メモリ確保開放用関数 APU_DECLARE_NONSTD(apr_bucket_alloc_t *) apr_bucket_alloc_create(apr_pool_t *p); APU_DECLARE_NONSTD(void) apr_bucket_alloc_destroy(apr_bucket_alloc_t *list…

/srclib/apr-util/include/apr_buckets.h struct apr_bucket_type_t { //このbucketのタイプ名 const char *name; //このbucketが理解出来る関数の数. 5未満は駄目 int num_func; //bucketがメタデータを含んでいるかどうか enum { APR_BUCKET_DATA = 0, APR…

今日からapacheのコード(httpd2.2.4)を読んで行き、メモ代わりにブログに書こうと思う。 まずはAPRの基本構造であるAPR_RINGから。 APR_RING srclib/apr/include/apr_ring.h #define APR_RING_ENTRY(elem) \ struct { \ struct elem *next; \ struct elem *p…