static int on_config_mime_types(h2o_configurator_t *configurator, h2o_context_t *ctx, const char *config_file, yoml_t *config_node) { size_t i; if (config_node->type != YOML_TYPE_MAPPING) { h2o_context_print_config_error(configurator, config_file, config_node, "argument must be a mapping"); return -1; } for (i = 0; i != config_node->data.mapping.size; ++i) { yoml_t *key = config_node->data.mapping.elements[i].key; yoml_t *value = config_node->data.mapping.elements[i].value; if (key->type != YOML_TYPE_SCALAR) { h2o_context_print_config_error(configurator, config_file, key, "key (representing the extension) must be a string"); return -1; } if (value->type != YOML_TYPE_SCALAR) { h2o_context_print_config_error(configurator, config_file, config_node, "value (representing the mime-type) must be a string"); return -1; } h2o_define_mimetype(&ctx->mimemap, key->data.scalar, value->data.scalar); } return 0; }
int main(int argc, char **argv) { signal(SIGPIPE, SIG_IGN); h2o_config_init(&config); register_handler(&config.default_host, post_test); register_handler(&config.default_host, chunked_test); register_handler(&config.default_host, reproxy_test); h2o_register_file_handler(&config.default_host, "/", "htdocs", "index.html"); h2o_define_mimetype(&config.default_host.mimemap, "html", "text/html"); h2o_register_reproxy_filter(&config.default_host); #if H2O_USE_LIBUV uv_loop_t loop; uv_loop_init(&loop); h2o_context_init(&ctx, &loop, &config); #else h2o_context_init(&ctx, h2o_evloop_create(), &config); #endif //ssl_ctx = h2o_ssl_new_server_context("server.crt", "server.key", h2o_http2_tls_identifiers); //h2o_register_access_logger(&ctx, "/dev/stdout"); if (create_listener() != 0) { fprintf(stderr, "failed to listen to 127.0.0.1:7890:%s\n", strerror(errno)); goto Error; } #if H2O_USE_LIBUV uv_run(ctx.loop, UV_RUN_DEFAULT); #else while (h2o_evloop_run(ctx.loop) == 0) ; #endif Error: return 1; }