|The library-worker status structure Internal to the worker. More...|
|int||libworker_bg (struct ub_ctx *ctx)|
|Create a background worker. More...|
|int||libworker_fg (struct ub_ctx *ctx, struct ctx_query *q)|
|Create a foreground worker. More...|
|struct libworker *||libworker_create_event (struct ub_ctx *ctx, struct ub_event_base *eb)|
|create worker for event-based interface. More...|
|int||libworker_attach_mesh (struct ub_ctx *ctx, struct ctx_query *q, int *async_id)|
|Attach context_query to mesh for callback in event-driven setup. More...|
|void||libworker_delete_event (struct libworker *w)|
|delete worker for event-based interface. More...|
|void||libworker_alloc_cleanup (void *arg)|
|cleanup the cache to remove all rrset IDs from it, arg is libworker |
|void||libworker_enter_result (struct ub_result *res, struct sldns_buffer *buf, struct regional *temp, enum sec_status msg_security)|
|fill result from parsed message, on error fills servfail More...|
This file contains the worker process or thread that performs the DNS resolving and validation. The worker is called by a procedure and if in the background continues until exit, if in the foreground returns from the procedure when done.
|int libworker_bg||(||struct ub_ctx *||ctx||)|
Create a background worker.
|ctx||is updated with pid/tid of the background worker. a new allocation cache is obtained from ctx. It contains the threadnumber and unique id for further (shared) cache insertions.|
References ub_ctx::bg_pid, ub_ctx::bg_tid, ub_ctx::cfglock, libworker::ctx, ub_ctx::dothread, libworker::is_bg_thread, libworker_dobg(), libworker_setup(), libworker::thread_num, UB_FORKFAIL, and UB_NOMEM.
Referenced by ub_resolve_async().
Create a foreground worker.
This worker will join the threadpool of resolver threads. It exits when the query answer has been obtained (or error). This routine blocks until the worker is finished.
|ctx||new allocation cache obtained and returned to it.|
|q||query (result is stored in here).|
References libworker::back, BIT_RD, libworker::ctx, libworker::env, libworker_delete(), libworker_fillup_fg(), libworker_setup(), ub_ctx::local_zones, local_zones_answer(), regional_free_all(), module_env::scratch, setup_qinfo_edns(), sldns_buffer_write_u16_at(), UB_INITFAIL, UB_SYNTAX, outside_network::udp_buff, and ctx_query::w.
Referenced by ub_resolve().
Attach context_query to mesh for callback in event-driven setup.
|q||context query entry|
|async_id||store query num if query takes long.|
References libworker::back, BIT_RD, libworker::ctx, libworker::env, ub_ctx::event_worker, libworker_event_done_cb(), ub_ctx::local_zones, local_zones_answer(), query_info::qname, regional_free_all(), module_env::scratch, setup_qinfo_edns(), sldns_buffer_write_u16_at(), UB_INITFAIL, UB_SYNTAX, outside_network::udp_buff, and ctx_query::w.
|void libworker_delete_event||(||struct libworker *||w||)|
|void libworker_enter_result||(||struct ub_result *||res,|
|struct sldns_buffer *||buf,|
|struct regional *||temp,|
fill result from parsed message, on error fills servfail
|res||is clear at start, filled in at end.|
|buf||contains DNS message.|
|temp||temporary buffer for parse.|
|msg_security||security status of the DNS message. On error, the res may contain a different status (out of memory is not secure, not bogus).|