void lwan_set_url_map(struct lwan *l, const struct lwan_url_map *map) { lwan_trie_destroy(&l->url_map_trie); if (UNLIKELY(!lwan_trie_init(&l->url_map_trie, destroy_urlmap))) lwan_status_critical_perror("Could not initialize trie"); for (; map->prefix; map++) { struct lwan_url_map *copy = add_url_map(&l->url_map_trie, NULL, map); if (copy->module && copy->module->create) { copy->data = copy->module->create (map->prefix, copy->args); copy->flags = copy->module->flags; copy->handler = copy->module->handle_request; } else { copy->flags = HANDLER_PARSE_MASK; } } }
void lwan_set_url_map(lwan_t *l, const lwan_url_map_t *map) { lwan_trie_destroy(l->url_map_trie); l->url_map_trie = lwan_trie_new(destroy_urlmap); for (; map->prefix; map++) { lwan_url_map_t *copy = add_url_map(l->url_map_trie, NULL, map); if (UNLIKELY(!copy)) continue; if (copy->handler && copy->handler->init) { copy->data = copy->handler->init(copy->args); copy->flags = copy->handler->flags; copy->callback = copy->handler->handle; } else { copy->flags = HANDLER_PARSE_MASK; } } }
void lwan_shutdown(struct lwan *l) { lwan_status_info("Shutting down"); free(l->config.listener); free(l->config.error_template); free(l->config.config_file_path); lwan_job_thread_shutdown(); lwan_thread_shutdown(l); lwan_status_debug("Shutting down URL handlers"); lwan_trie_destroy(&l->url_map_trie); free(l->conns); lwan_response_shutdown(l); lwan_tables_shutdown(); lwan_status_shutdown(l); lwan_http_authorize_shutdown(); }
void lwan_set_url_map(lwan_t *l, const lwan_url_map_t *map) { lwan_trie_destroy(&l->url_map_trie); if (UNLIKELY(!lwan_trie_init(&l->url_map_trie, destroy_urlmap))) lwan_status_critical_perror("Could not initialize trie"); for (; map->prefix; map++) { lwan_url_map_t *copy = add_url_map(&l->url_map_trie, NULL, map); if (UNLIKELY(!copy)) continue; if (copy->module && copy->module->init) { copy->data = copy->module->init(copy->args); copy->flags = copy->module->flags; copy->handler = copy->module->handle; } else { copy->flags = HANDLER_PARSE_MASK; } } }
void lwan_shutdown(lwan_t *l) { lwan_status_info("Shutting down"); if (l->config.listener != default_config.listener) free(l->config.listener); lwan_job_thread_shutdown(); lwan_thread_shutdown(l); lwan_status_debug("Shutting down URL handlers"); lwan_trie_destroy(&l->url_map_trie); free(l->conns); lwan_response_shutdown(); lwan_tables_shutdown(); lwan_status_shutdown(l); lwan_http_authorize_shutdown(); lwan_module_shutdown(l); }
void lwan_shutdown(lwan_t *l) { lwan_status_info("Shutting down"); lwan_job_thread_shutdown(); lwan_thread_shutdown(l); lwan_socket_shutdown(l); lwan_status_debug("Shutting down URL handlers"); lwan_trie_destroy(l->url_map_trie); int i; for (i = l->thread.max_fd * l->thread.count - 1; i >= 0; --i) strbuf_free(l->conns[i].response_buffer); free(l->conns); lwan_response_shutdown(); lwan_tables_shutdown(); lwan_status_shutdown(l); lwan_http_authorize_shutdown(); }