From: Vladimír Čunát Date: Mon, 19 Apr 2021 16:22:14 +0000 (+0200) Subject: daemon/worker: rework worker_request_*_source_session() X-Git-Tag: v5.3.2~7^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=91b3e7eaf514bda94247a6445c9f9101e208ae4d;p=thirdparty%2Fknot-resolver.git daemon/worker: rework worker_request_*_source_session() I see no potential use for `set`; it's not a suitable abstraction. And for `get` we want to use a pointer to the public type instead of the private one. Overall, worker.h has way too many stuff, but this branch is not a good place to clean it up. --- diff --git a/daemon/worker.c b/daemon/worker.c index d3e06a034..6710fa669 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -2056,14 +2056,11 @@ struct request_ctx *worker_task_get_request(struct qr_task *task) return task->ctx; } -struct session *worker_request_get_source_session(struct request_ctx *ctx) +struct session *worker_request_get_source_session(const struct kr_request *req) { - return ctx->source.session; -} - -void worker_request_set_source_session(struct request_ctx *ctx, struct session *session) -{ - ctx->source.session = session; + static_assert(offsetof(struct request_ctx, req) == 0, + "Bad struct request_ctx definition."); + return ((struct request_ctx *)req)->source.session; } uint16_t worker_task_pkt_get_msgid(struct qr_task *task) diff --git a/daemon/worker.h b/daemon/worker.h index 5f7be5b43..51c9099cc 100644 --- a/daemon/worker.h +++ b/daemon/worker.h @@ -107,9 +107,8 @@ knot_pkt_t *worker_task_get_pktbuf(const struct qr_task *task); struct request_ctx *worker_task_get_request(struct qr_task *task); -struct session *worker_request_get_source_session(struct request_ctx *); - -void worker_request_set_source_session(struct request_ctx *, struct session *session); +/** Note: source session is NULL in case the request hasn't come over network. */ +KR_EXPORT struct session *worker_request_get_source_session(const struct kr_request *req); uint16_t worker_task_pkt_get_msgid(struct qr_task *task); void worker_task_pkt_set_msgid(struct qr_task *task, uint16_t msgid);