Apache

ValgrindでApacheモジュールのメモリバグを見つけよう

mod_uploaderの作者さんがまとめている開発Tips(http://acapulco.dyndns.org/mod_uploader/module_dev.htm)にあったデバッグ方法を試してみました。 Valgrind http://valgrind.org/ Valgrindはメモリ周りのバグや、スレッド系のバグを自動的に検出してくれる…

mod_upload

id:miyagwaさんのブックマークから発見。 ファイルアップロードをやってくれる、Apacheモジュール。 速いらしい。 モジュールの機能自体も興味深いのですが、更に面白いのがモジュールC++で書かれていること。(通常はCで書くことがほとんど) これは良いサン…

Apacheモジュールの処理時間を計測

Apacheモジュールの処理時間を計測する方法を少しでも楽にできないかと考えてみました。 使い方 後述のprofile.cを includeします。モジュール中のハンドラにおいて、測定したい箇所で、下のように書きます。 2番目の引数は、結果表示時の並び順に使ってい…

apr_table_setに文字列以外を放り込んでみたら

Apache APIには、apr_table_get/apr_table_setというのがある。 内部テーブルに key=valueの形式で値を保持しておけるので、各フェーズでのハンドラで情報を共有できたりします。*1 (グローバル変数はマルチスレッドとかでほげほげなのでご法度です) apr_t…

Apacheモジュールのプロファイルをしたい

Apacheモジュールのプロファイルをしようと思い、CFLAGSとLDFLAGSに -pg をつけて、モジュールをビルドしたが、gprof用のファイルが出力されず残念。 じゃあコードを埋め込んで時間測定しようと思い、なぜかManpage of PROFILのページのやる気のなさにひかれ…

Apache 2.2リリース と mod_proxy_balancer

Apache 2.2がリリースされました。 そして、mod_proxy_balancerというものが。 This module requires the service of mod_proxy. It provides load balancing support for HTTP, FTP and AJP13 protocols Thus, in order to get the ability of load balanci…

出力されたコンテンツをoutput filterで覗き見る

最近覗き系が多い気がしますが、解決したのでまとめておきます。 まずはソースから、デバッグ用にモジュールを1ついい加減に作ってしまいました。 static int outputfilter(ap_filter_t* f, apr_bucket_brigade* bb) { request_rec* r = f->r; apr_bucket* b…

フィルタとバケットが分かった気がする

フィルタは、入力・出力を変更するために登録するフック関数。 バケットは、入力・出力の中身。 たとえば出力であれば、あるリクエストに対して以下のような出力フィルタスタックがあります。 filter1 filter2 filter3 filter4 my filter filter 5 my filter…

output_filterで出力を覗き見してみようよ

いろいろなモジュールのコードを読んで切り貼りして output_filter を書いてみました。 まだ動作が微妙で、コンテンツが途中で切れたりします。 このあたりは、日本語の資料が少ないのは当然、英語の資料も少ないです(;´Д`)。 まずは、output_filter を登…

output_filterで出力を覗き見を調べ中

mod_bwを参考に。 rv = apr_bucket_read (e, &str, &len, APR_NONBLOCK_READ); こんな感じでouput_filterで bucket_readしてみたところ \x80\x8e{\xba\xf4~\xe3\xbb\xf3w\ こんな感じで謎のコンテンツがreadできる。 Apacheの設定によって、出力されたHTMLが…

Apache 2.0のfilterを調べる

最終目標 Apacheがクライアントに対して送信(出力)したContentを自作モジュールから参照したい。 filter? Apache 2.0に実装されたfilterを使用すればこれが実現できそうだ。ということでいろいろ調べています。 まずは公式ドキュメントを読み始めるも意味が…

Apache2の自作モジュールからで httpd.conf から値をとる

Apacheの設定は httpd.conf で行いますが独自のモジュールを作成した場合に、独自のディレクティブを定義し設定を読み込みたい場合があります。 モジュール固有のパラメータなどがサーバー毎に異なる場合などに利用できるでしょう。 Apache1.3系での方法は、…