Lines Matching refs:srv
125 int plugins_load(server *srv) { in plugins_load() argument
126 ck_realloc_u32(&srv->plugins.ptr, 0, in plugins_load()
127 srv->srvconf.modules->used, sizeof(plugin *)); in plugins_load()
129 for (uint32_t i = 0; i < srv->srvconf.modules->used; ++i) { in plugins_load()
130 data_string *ds = (data_string *)srv->srvconf.modules->data[i]; in plugins_load()
138 log_error(srv->errh, __FILE__, __LINE__, "%s plugin init failed", module); in plugins_load()
142 ((plugin **)srv->plugins.ptr)[srv->plugins.used++] = p; in plugins_load()
147 log_error(srv->errh, __FILE__, __LINE__, "%s plugin not found", module); in plugins_load()
148 if (srv->srvconf.compat_module_load) { in plugins_load()
161 int plugins_load(server *srv) { in plugins_load() argument
162 ck_realloc_u32(&srv->plugins.ptr, 0, in plugins_load()
163 srv->srvconf.modules->used, sizeof(plugin *)); in plugins_load()
165 buffer * const tb = srv->tmp_buf; in plugins_load()
168 for (uint32_t i = 0; i < srv->srvconf.modules->used; ++i) { in plugins_load()
169 const buffer * const module = &((data_string *)srv->srvconf.modules->data[i])->value; in plugins_load()
184 buffer_copy_string(tb, srv->srvconf.modules_dir); in plugins_load()
190 log_w32_syserror_2(srv->errh, __FILE__, __LINE__, in plugins_load()
192 if (srv->srvconf.compat_module_load) { in plugins_load()
202 log_w32_syserror_2(srv->errh, __FILE__, __LINE__, in plugins_load()
214 log_error(srv->errh, __FILE__, __LINE__, in plugins_load()
216 if (srv->srvconf.compat_module_load) { in plugins_load()
229 log_error(srv->errh, __FILE__, __LINE__, "dlsym: %s", error); in plugins_load()
231 log_error(srv->errh, __FILE__, __LINE__, "dlsym symbol not found: %s", tb->ptr); in plugins_load()
242 log_error(srv->errh, __FILE__, __LINE__, "%s plugin init failed", module->ptr); in plugins_load()
246 ((plugin **)srv->plugins.ptr)[srv->plugins.used++] = p; in plugins_load()
309 static handler_t plugins_call_fn_srv_data(server * const srv, const int e) { in plugins_call_fn_srv_data() argument
310 const uint32_t offset = ((const uint16_t *)srv->plugin_slots)[e]; in plugins_call_fn_srv_data()
313 (((uintptr_t)srv->plugin_slots) + offset); in plugins_call_fn_srv_data()
315 while (plfd->fn && (rc = plfd->fn(srv,plfd->data)) == HANDLER_GO_ON) in plugins_call_fn_srv_data()
320 static void plugins_call_fn_srv_data_all(server * const srv, const int e) { in plugins_call_fn_srv_data_all() argument
321 const uint32_t offset = ((const uint16_t *)srv->plugin_slots)[e]; in plugins_call_fn_srv_data_all()
324 (((uintptr_t)srv->plugin_slots) + offset); in plugins_call_fn_srv_data_all()
326 plfd->fn(srv, plfd->data); in plugins_call_fn_srv_data_all()
375 handler_t plugins_call_set_defaults(server *srv) {
376 return plugins_call_fn_srv_data(srv, PLUGIN_FUNC_SET_DEFAULTS);
379 handler_t plugins_call_worker_init(server *srv) { in plugins_call_worker_init() argument
380 return plugins_call_fn_srv_data(srv, PLUGIN_FUNC_WORKER_INIT); in plugins_call_worker_init()
383 void plugins_call_handle_trigger(server *srv) { in plugins_call_handle_trigger() argument
384 plugins_call_fn_srv_data_all(srv, PLUGIN_FUNC_HANDLE_TRIGGER); in plugins_call_handle_trigger()
387 void plugins_call_handle_sighup(server *srv) { in plugins_call_handle_sighup() argument
388 plugins_call_fn_srv_data_all(srv, PLUGIN_FUNC_HANDLE_SIGHUP); in plugins_call_handle_sighup()
391 handler_t plugins_call_handle_waitpid(server *srv, pid_t pid, int status) { in plugins_call_handle_waitpid() argument
393 ((const uint16_t *)srv->plugin_slots)[PLUGIN_FUNC_HANDLE_WAITPID]; in plugins_call_handle_waitpid()
396 (((uintptr_t)srv->plugin_slots) + offset); in plugins_call_handle_waitpid()
398 while (plfd->fn&&(rc=plfd->fn(srv,plfd->data,pid,status))==HANDLER_GO_ON) in plugins_call_handle_waitpid()
403 static void plugins_call_cleanup(server * const srv) { in plugins_call_cleanup() argument
404 plugin ** const ps = srv->plugins.ptr; in plugins_call_cleanup()
405 for (uint32_t i = 0; i < srv->plugins.used; ++i) { in plugins_call_cleanup()
420 static void plugins_call_init_reverse(server *srv, const uint32_t offset) { in plugins_call_init_reverse() argument
423 (((uintptr_t)srv->plugin_slots) + offset); in plugins_call_init_reverse()
434 static void plugins_call_init_slot(server *srv, pl_cb_t fn, void *data, const uint32_t offset) { in plugins_call_init_slot() argument
437 (((uintptr_t)srv->plugin_slots) + offset); in plugins_call_init_slot()
444 handler_t plugins_call_init(server *srv) { in plugins_call_init() argument
445 plugin ** const ps = srv->plugins.ptr; in plugins_call_init()
449 for (uint32_t i = 0; i < srv->plugins.used; ++i) { in plugins_call_init()
456 log_error(srv->errh, __FILE__, __LINE__, in plugins_call_init()
465 log_error(srv->errh, __FILE__, __LINE__, in plugins_call_init()
471 if (p->priv_defaults && HANDLER_ERROR==p->priv_defaults(srv, p->data)) { in plugins_call_init()
523 srv->plugin_slots = ck_calloc(nslots, sizeof(plugin_fn_data)); in plugins_call_init()
524 memcpy(srv->plugin_slots, offsets, sizeof(offsets)); in plugins_call_init()
527 for (uint32_t i = 0; i < srv->plugins.used; ++i) { in plugins_call_init()
529 plugins_call_init_slot(srv, (pl_cb_t)p->handle_uri_raw, p->data, in plugins_call_init()
533 for (uint32_t i = 0; i < srv->plugins.used; ++i) { in plugins_call_init()
537 plugins_call_init_slot(srv, (pl_cb_t)p->handle_uri_clean, p->data, in plugins_call_init()
539 plugins_call_init_slot(srv, (pl_cb_t)p->handle_request_env, p->data, in plugins_call_init()
541 plugins_call_init_slot(srv, (pl_cb_t)p->handle_request_done, p->data, in plugins_call_init()
543 plugins_call_init_slot(srv, (pl_cb_t)p->handle_connection_accept, p->data, in plugins_call_init()
545 plugins_call_init_slot(srv, (pl_cb_t)p->handle_connection_shut_wr, p->data, in plugins_call_init()
547 plugins_call_init_slot(srv, (pl_cb_t)p->handle_connection_close, p->data, in plugins_call_init()
549 plugins_call_init_slot(srv, (pl_cb_t)p->handle_trigger, p->data, in plugins_call_init()
551 plugins_call_init_slot(srv, (pl_cb_t)p->handle_sighup, p->data, in plugins_call_init()
553 plugins_call_init_slot(srv, (pl_cb_t)(uintptr_t)p->handle_waitpid, p->data, in plugins_call_init()
555 plugins_call_init_slot(srv, (pl_cb_t)p->handle_subrequest_start, p->data, in plugins_call_init()
557 plugins_call_init_slot(srv, (pl_cb_t)p->handle_response_start, p->data, in plugins_call_init()
559 plugins_call_init_slot(srv, (pl_cb_t)p->handle_docroot, p->data, in plugins_call_init()
561 plugins_call_init_slot(srv, (pl_cb_t)p->handle_physical, p->data, in plugins_call_init()
563 plugins_call_init_slot(srv, (pl_cb_t)p->handle_request_reset, p->data, in plugins_call_init()
565 plugins_call_init_slot(srv, (pl_cb_t)p->set_defaults, p->data, in plugins_call_init()
567 plugins_call_init_slot(srv, (pl_cb_t)p->worker_init, p->data, in plugins_call_init()
572 plugins_call_init_reverse(srv,offsets[PLUGIN_FUNC_HANDLE_REQUEST_RESET]); in plugins_call_init()
573 plugins_call_init_reverse(srv,offsets[PLUGIN_FUNC_HANDLE_CONNECTION_CLOSE]); in plugins_call_init()
578 void plugins_free(server *srv) { in plugins_free() argument
579 if (srv->plugin_slots) { in plugins_free()
580 plugins_call_cleanup(srv); in plugins_free()
581 free(srv->plugin_slots); in plugins_free()
582 srv->plugin_slots = NULL; in plugins_free()
585 for (uint32_t i = 0; i < srv->plugins.used; ++i) { in plugins_free()
586 plugin_free(((plugin **)srv->plugins.ptr)[i]); in plugins_free()
588 free(srv->plugins.ptr); in plugins_free()
589 srv->plugins.ptr = NULL; in plugins_free()
590 srv->plugins.used = 0; in plugins_free()