void h2o_context_init(h2o_context_t *ctx, h2o_loop_t *loop, h2o_globalconf_t *config) { size_t i, j; assert(config->hosts.size != 0); memset(ctx, 0, sizeof(*ctx)); ctx->loop = loop; ctx->globalconf = config; h2o_timeout_init(ctx->loop, &ctx->zero_timeout, 0); h2o_timeout_init(ctx->loop, &ctx->http1.req_timeout, config->http1.req_timeout); h2o_timeout_init(ctx->loop, &ctx->http2.idle_timeout, config->http2.idle_timeout); ctx->_module_configs = h2o_mem_alloc(sizeof(*ctx->_module_configs) * config->_num_config_slots); memset(ctx->_module_configs, 0, sizeof(*ctx->_module_configs) * config->_num_config_slots); for (i = 0; i != config->hosts.size; ++i) { h2o_hostconf_t *hostconf = config->hosts.entries + i; for (j = 0; j != hostconf->paths.size; ++j) { h2o_pathconf_t *pathconf = hostconf->paths.entries + j; on_context_init(ctx, pathconf); } on_context_init(ctx, &hostconf->fallback_path); } }
void h2o_context_init(h2o_context_t *ctx, h2o_loop_t *loop, h2o_globalconf_t *config) { size_t i; assert(config->hosts.size != 0); memset(ctx, 0, sizeof(*ctx)); ctx->loop = loop; ctx->global_config = config; h2o_timeout_init(ctx->loop, &ctx->zero_timeout, 0); h2o_timeout_init(ctx->loop, &ctx->req_timeout, config->req_timeout); ctx->_module_configs = h2o_malloc(sizeof(*ctx->_module_configs) * config->_num_config_slots); memset(ctx->_module_configs, 0, sizeof(*ctx->_module_configs) * config->_num_config_slots); for (i = 0; i != config->hosts.size; ++i) { h2o_hostconf_t *hostconf = config->hosts.entries + i; on_context_init(ctx, hostconf); } }