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時間でもあればいろいろ進みます。