* お仕事 [#u5d549fc]

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

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

いつも見ている [[DSAS開発者の部屋:http://dsas.blog.klab.org/archives/50574774.html]] のページが参考になりました。

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 が返れば問題ないです。

* お勉強 [#k18bfff9]

著作権法の過去問。

- 3 著作者人格権、著作権 (続き)
- 4 著作隣接権

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

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

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

----
#comment

トップ   差分 履歴 リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS