diff --git a/src/plugin.c b/src/plugin.c index ae255ddd..6077b292 100644 --- a/src/plugin.c +++ b/src/plugin.c @@ -29,7 +29,6 @@ array plugin_stats; /* global */ typedef enum { PLUGIN_FUNC_HANDLE_URI_CLEAN, - PLUGIN_FUNC_HANDLE_URI_RAW, PLUGIN_FUNC_HANDLE_REQUEST_ENV, PLUGIN_FUNC_HANDLE_REQUEST_DONE, PLUGIN_FUNC_HANDLE_CONNECTION_ACCEPT, @@ -322,7 +321,6 @@ static void plugins_call_fn_srv_data_all(server * const srv, const int e) { } PLUGIN_CALL_FN_REQ_DATA(PLUGIN_FUNC_HANDLE_URI_CLEAN, handle_uri_clean) -PLUGIN_CALL_FN_REQ_DATA(PLUGIN_FUNC_HANDLE_URI_RAW, handle_uri_raw) PLUGIN_CALL_FN_REQ_DATA(PLUGIN_FUNC_HANDLE_REQUEST_ENV, handle_request_env) PLUGIN_CALL_FN_REQ_DATA(PLUGIN_FUNC_HANDLE_REQUEST_DONE, handle_request_done) PLUGIN_CALL_FN_REQ_DATA(PLUGIN_FUNC_HANDLE_SUBREQUEST_START, handle_subrequest_start) @@ -452,8 +450,8 @@ handler_t plugins_call_init(server *srv) { if (p->handle_uri_clean) ++offsets[PLUGIN_FUNC_HANDLE_URI_CLEAN]; - if (p->handle_uri_raw) - ++offsets[PLUGIN_FUNC_HANDLE_URI_RAW]; + if (p->handle_uri_raw && !p->handle_uri_clean) + ++offsets[PLUGIN_FUNC_HANDLE_URI_CLEAN]; /*(same as above)*/ if (p->handle_request_env) ++offsets[PLUGIN_FUNC_HANDLE_REQUEST_ENV]; if (p->handle_request_done) @@ -502,13 +500,19 @@ handler_t plugins_call_init(server *srv) { force_assert(NULL != srv->plugin_slots); memcpy(srv->plugin_slots, offsets, sizeof(offsets)); + /* add handle_uri_raw before handle_uri_clean, but in same slot */ + for (uint32_t i = 0; i < srv->plugins.used; ++i) { + plugin * const p = ps[i]; + plugins_call_init_slot(srv, p->handle_uri_raw, p->data, + offsets[PLUGIN_FUNC_HANDLE_URI_CLEAN]); + } + for (uint32_t i = 0; i < srv->plugins.used; ++i) { plugin * const p = ps[i]; - plugins_call_init_slot(srv, p->handle_uri_clean, p->data, - offsets[PLUGIN_FUNC_HANDLE_URI_CLEAN]); - plugins_call_init_slot(srv, p->handle_uri_raw, p->data, - offsets[PLUGIN_FUNC_HANDLE_URI_RAW]); + if (!p->handle_uri_raw) + plugins_call_init_slot(srv, p->handle_uri_clean, p->data, + offsets[PLUGIN_FUNC_HANDLE_URI_CLEAN]); plugins_call_init_slot(srv, p->handle_request_env, p->data, offsets[PLUGIN_FUNC_HANDLE_REQUEST_ENV]); plugins_call_init_slot(srv, p->handle_request_done, p->data, diff --git a/src/plugin.h b/src/plugin.h index c5276a39..a649b6d7 100644 --- a/src/plugin.h +++ b/src/plugin.h @@ -98,7 +98,6 @@ int plugins_load(server *srv); __attribute_cold__ void plugins_free(server *srv); -handler_t plugins_call_handle_uri_raw(request_st *r); handler_t plugins_call_handle_uri_clean(request_st *r); handler_t plugins_call_handle_subrequest_start(request_st *r); handler_t plugins_call_handle_response_start(request_st *r); diff --git a/src/response.c b/src/response.c index ad35573c..da780a53 100644 --- a/src/response.c +++ b/src/response.c @@ -412,17 +412,6 @@ http_response_prepare (request_st * const r) } - /** - * - * call plugins - * - * - based on the raw URL - * - */ - - rc = plugins_call_handle_uri_raw(r); - if (HANDLER_GO_ON != rc) continue; - /** * * call plugins