diff --git a/src/gw_backend.c b/src/gw_backend.c index cd2ac951..dbef6328 100644 --- a/src/gw_backend.c +++ b/src/gw_backend.c @@ -2488,17 +2488,31 @@ static void gw_handle_trigger_exts(server *srv, gw_exts *exts, int debug) { } } +static void gw_handle_trigger_exts_wkr(server *srv, gw_exts *exts) { + for (size_t j = 0; j < exts->used; ++j) { + gw_extension * const ex = exts->exts[j]; + for (size_t n = 0; n < ex->used; ++n) { + gw_host * const host = ex->hosts[n]; + for (gw_proc *proc = host->first; proc; proc = proc->next) { + if (proc->state == PROC_STATE_OVERLOADED) + gw_proc_check_enable(srv, host, proc); + } + } + } +} + handler_t gw_handle_trigger(server *srv, void *p_d) { gw_plugin_data *p = p_d; - if (0 != srv->srvconf.max_worker && p->srv_pid != srv->pid) - return HANDLER_GO_ON; + int wkr = (0 != srv->srvconf.max_worker && p->srv_pid != srv->pid); for (size_t i = 0; i < srv->config_context->used; i++) { gw_plugin_config *conf = p->config_storage[i]; gw_exts *exts = conf->exts; int debug = conf->debug ? conf->debug : p->config_storage[0]->debug; if (NULL == exts) continue; - gw_handle_trigger_exts(srv, exts, debug); + wkr + ? gw_handle_trigger_exts_wkr(srv, exts) + : gw_handle_trigger_exts(srv, exts, debug); } return HANDLER_GO_ON;