お仕事

HTTP/1.1 だけを受け付けて 1.0 を弾くようなサーバを立てられないかということで、 httpd.conf の設定をいろいろと調べたもののよくわからず。

Apache の Module を書いてしまえということで、さくさくと作ってしまいました。 こんなに簡単にできるとは。。Google 先生は偉大ですね。

いつも見ている DSAS開発者の部屋 のページが参考になりました。

mod_http_1_1 として作っています。

#code(c){{

#include "httpd.h"

#include "http_config.h"

#include "http_protocol.h"

#include "ap_config.h"

/* The sample content handler */ static int http_1_1_handler(request_rec *r) {

   if (strcmp(r->handler, "http_1_1")) {
       return DECLINED;
   }
   if (strcmp(r->protocol, "HTTP/1.1")) {
       return HTTP_INTERNAL_SERVER_ERROR;
   }
   r->content_type = "text/html";      
   ap_rputs("Good request in HTTP/1.1.\n", r);
   return OK;

}

static void http_1_1_register_hooks(apr_pool_t *p) {

   ap_hook_handler(http_1_1_handler, NULL, NULL, APR_HOOK_MIDDLE);

}

/* Dispatch list for API hooks */ module AP_MODULE_DECLARE_DATA http_1_1_module = {

   STANDARD20_MODULE_STUFF, 
   NULL,                  /* create per-dir    config structures */
   NULL,                  /* merge  per-dir    config structures */
   NULL,                  /* create per-server config structures */
   NULL,                  /* merge  per-server config structures */
   NULL,                  /* table of config file commands       */
   http_1_1_register_hooks  /* register hooks                      */

}; }}

エラーは HTTP_VERSION_NOT_SUPPORTED (505) を返したかったところですが、 200 が返ってしまうのでやむなく HTTP_INTERNAL_SERVER_ERROR (500) にしました。

まぁ 5xx が返れば問題ないです。

お勉強

著作権法の過去問。

正解率は70%ほど。あとは直前に詰め込むしかないですね。

短答アドヴァンステキストは商4条まで。まだまだ先は長い。

定時でそのまま早く帰ってくれば3時間は取れますね。 1時間でもあればいろいろ進みます。



トップ   差分 履歴 リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-01-29 (土) 15:27:48