diff options
author | Zhidao HONG <z.hong@f5.com> | 2024-04-18 18:16:01 +0800 |
---|---|---|
committer | Zhidao HONG <z.hong@f5.com> | 2024-08-20 09:17:23 +0800 |
commit | 2eecee7520558a8f72e98e839a77330712a946b4 (patch) | |
tree | ad98b468f69f3575eec232a5e30faeea8b86fbc6 | |
parent | 76489fb7e0ab9142651b91ee8072c6cda270dd09 (diff) | |
download | unit-2eecee7520558a8f72e98e839a77330712a946b4.tar.gz unit-2eecee7520558a8f72e98e839a77330712a946b4.tar.bz2 |
var: Restrict nxt_tstr_query() to only support synchronous operation
Initially, variable query was designed to accomodate both synchronous
and asynchronous operations. However, upon consideration of actual
requirements, we recognized that asynchronous support was not needed.
The refactoring ensures that the success or failure of the variable
query operation is now directly indicated by its return value. This
change streamlines the function's usage and enhances code clarity,
as it facilitates immediate error handling without the need for
asynchronous callbacks or additional error checking functions.
Note the patch only works for Unit native variables but not njs
variables.
-rw-r--r-- | src/nxt_http_request.c | 5 | ||||
-rw-r--r-- | src/nxt_http_rewrite.c | 5 | ||||
-rw-r--r-- | src/nxt_http_set_headers.c | 5 | ||||
-rw-r--r-- | src/nxt_tstr.c | 12 | ||||
-rw-r--r-- | src/nxt_tstr.h | 4 |
5 files changed, 15 insertions, 16 deletions
diff --git a/src/nxt_http_request.c b/src/nxt_http_request.c index 54d1bd27..ccd2b141 100644 --- a/src/nxt_http_request.c +++ b/src/nxt_http_request.c @@ -936,9 +936,8 @@ nxt_http_request_access_log(nxt_task_t *task, nxt_http_request_t *r, return NXT_DECLINED; } - nxt_tstr_query(task, r->tstr_query, rtcf->log_expr, &str); - - if (nxt_slow_path(nxt_tstr_query_failed(r->tstr_query))) { + ret = nxt_tstr_query(task, r->tstr_query, rtcf->log_expr, &str); + if (nxt_slow_path(ret != NXT_OK)) { return NXT_DECLINED; } } diff --git a/src/nxt_http_rewrite.c b/src/nxt_http_rewrite.c index 661200ef..5de15ed7 100644 --- a/src/nxt_http_rewrite.c +++ b/src/nxt_http_rewrite.c @@ -52,9 +52,8 @@ nxt_http_rewrite(nxt_task_t *task, nxt_http_request_t *r) return NXT_ERROR; } - nxt_tstr_query(task, r->tstr_query, action->rewrite, &str); - - if (nxt_slow_path(nxt_tstr_query_failed(r->tstr_query))) { + ret = nxt_tstr_query(task, r->tstr_query, action->rewrite, &str); + if (nxt_slow_path(ret != NXT_OK)) { return NXT_ERROR; } } diff --git a/src/nxt_http_set_headers.c b/src/nxt_http_set_headers.c index 25dd7478..7fd6aba5 100644 --- a/src/nxt_http_set_headers.c +++ b/src/nxt_http_set_headers.c @@ -139,9 +139,8 @@ nxt_http_set_headers(nxt_http_request_t *r) return NXT_ERROR; } - nxt_tstr_query(&r->task, r->tstr_query, hv->value, &value[i]); - - if (nxt_slow_path(nxt_tstr_query_failed(r->tstr_query))) { + ret = nxt_tstr_query(&r->task, r->tstr_query, hv->value, &value[i]); + if (nxt_slow_path(ret != NXT_OK)) { return NXT_ERROR; } } diff --git a/src/nxt_tstr.c b/src/nxt_tstr.c index 6f39cff2..a72d7ddc 100644 --- a/src/nxt_tstr.c +++ b/src/nxt_tstr.c @@ -246,7 +246,7 @@ nxt_tstr_query_init(nxt_tstr_query_t **query_p, nxt_tstr_state_t *state, } -void +nxt_int_t nxt_tstr_query(nxt_task_t *task, nxt_tstr_query_t *query, nxt_tstr_t *tstr, nxt_str_t *val) { @@ -254,11 +254,11 @@ nxt_tstr_query(nxt_task_t *task, nxt_tstr_query_t *query, nxt_tstr_t *tstr, if (nxt_tstr_is_const(tstr)) { nxt_tstr_str(tstr, val); - return; + return NXT_OK; } if (nxt_slow_path(query->failed)) { - return; + return NXT_ERROR; } if (tstr->type == NXT_TSTR_VAR) { @@ -268,7 +268,7 @@ nxt_tstr_query(nxt_task_t *task, nxt_tstr_query_t *query, nxt_tstr_t *tstr, if (nxt_slow_path(ret != NXT_OK)) { query->failed = 1; - return; + return NXT_ERROR; } } else { @@ -278,7 +278,7 @@ nxt_tstr_query(nxt_task_t *task, nxt_tstr_query_t *query, nxt_tstr_t *tstr, if (nxt_slow_path(ret != NXT_OK)) { query->failed = 1; - return; + return NXT_ERROR; } #endif } @@ -294,6 +294,8 @@ nxt_tstr_query(nxt_task_t *task, nxt_tstr_query_t *query, nxt_tstr_t *tstr, nxt_debug(task, "tstr query: \"%V\", result: \"%V\"", &str, val); #endif + + return NXT_OK; } diff --git a/src/nxt_tstr.h b/src/nxt_tstr.h index a156732d..574b4281 100644 --- a/src/nxt_tstr.h +++ b/src/nxt_tstr.h @@ -50,8 +50,8 @@ void nxt_tstr_str(nxt_tstr_t *tstr, nxt_str_t *str); nxt_int_t nxt_tstr_query_init(nxt_tstr_query_t **query_p, nxt_tstr_state_t *state, nxt_tstr_cache_t *cache, void *ctx, nxt_mp_t *mp); -void nxt_tstr_query(nxt_task_t *task, nxt_tstr_query_t *query, nxt_tstr_t *tstr, - nxt_str_t *val); +nxt_int_t nxt_tstr_query(nxt_task_t *task, nxt_tstr_query_t *query, + nxt_tstr_t *tstr, nxt_str_t *val); nxt_bool_t nxt_tstr_query_failed(nxt_tstr_query_t *query); void nxt_tstr_query_resolve(nxt_task_t *task, nxt_tstr_query_t *query, void *data, nxt_work_handler_t ready, nxt_work_handler_t error); |