From: Nick Porter Date: Thu, 2 Feb 2023 10:16:35 +0000 (+0000) Subject: Use connection handles from the slab rather than the pool X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3ab85f1cbf786ac0d47596b52828dd6c308e4fcc;p=thirdparty%2Ffreeradius-server.git Use connection handles from the slab rather than the pool --- diff --git a/src/modules/rlm_rest/io.c b/src/modules/rlm_rest/io.c index 98455de1a02..a58c26bf2ff 100644 --- a/src/modules/rlm_rest/io.c +++ b/src/modules/rlm_rest/io.c @@ -48,7 +48,7 @@ void rest_io_module_signal(module_ctx_t const *mctx, request_t *request, fr_stat t->mhandle->transfers--; rest_request_cleanup(mctx->inst->data, randle); - fr_pool_connection_release(t->pool, request, randle); + fr_rest_slab_release(randle); } /** Handle asynchronous cancellation of a request diff --git a/src/modules/rlm_rest/rlm_rest.c b/src/modules/rlm_rest/rlm_rest.c index 90bd1313889..12a8582e249 100644 --- a/src/modules/rlm_rest/rlm_rest.c +++ b/src/modules/rlm_rest/rlm_rest.c @@ -265,7 +265,6 @@ static xlat_action_t rest_xlat_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, request_t *request, UNUSED FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_rest_t const *inst = talloc_get_type_abort(xctx->mctx->inst->data, rlm_rest_t); - rlm_rest_thread_t *t = talloc_get_type_abort(xctx->mctx->thread, rlm_rest_thread_t); rlm_rest_xlat_rctx_t *rctx = talloc_get_type_abort(xctx->rctx, rlm_rest_xlat_rctx_t); int hcode; ssize_t len; @@ -332,7 +331,7 @@ finish: rest_request_cleanup(inst, handle); - fr_pool_connection_release(t->pool, request, handle); + fr_rest_slab_release(handle); talloc_free(rctx); @@ -464,7 +463,7 @@ static xlat_action_t rest_xlat(UNUSED TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out, * We get a connection from the pool here as the CURL object * is needed to use curl_easy_escape() for escaping */ - randle = rctx->handle = fr_pool_connection_get(t->pool, request); + randle = rctx->handle = fr_rest_slab_reserve(t->slab); if (!randle) return XLAT_ACTION_FAIL; /* @@ -482,7 +481,7 @@ static xlat_action_t rest_xlat(UNUSED TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out, error: rest_request_cleanup(inst, randle); - fr_pool_connection_release(t->pool, request, randle); + fr_rest_slab_release(randle); talloc_free(section); return XLAT_ACTION_FAIL; @@ -543,7 +542,6 @@ static xlat_action_t rest_xlat(UNUSED TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out, static unlang_action_t mod_authorize_result(rlm_rcode_t *p_result, module_ctx_t const *mctx, request_t *request) { rlm_rest_t const *inst = talloc_get_type_abort_const(mctx->inst->data, rlm_rest_t); - rlm_rest_thread_t *t = talloc_get_type_abort(mctx->thread, rlm_rest_thread_t); rlm_rest_section_t const *section = &inst->authenticate; fr_curl_io_request_t *handle = talloc_get_type_abort(mctx->rctx, fr_curl_io_request_t); @@ -618,7 +616,7 @@ static unlang_action_t mod_authorize_result(rlm_rcode_t *p_result, module_ctx_t finish: rest_request_cleanup(inst, handle); - fr_pool_connection_release(t->pool, request, handle); + fr_rest_slab_release(handle); RETURN_MODULE_RCODE(rcode); } @@ -640,13 +638,13 @@ static unlang_action_t CC_HINT(nonnull) mod_authorize(rlm_rcode_t *p_result, mod if (!section->name) RETURN_MODULE_NOOP; - handle = fr_pool_connection_get(t->pool, request); + handle = fr_rest_slab_reserve(t->slab); if (!handle) RETURN_MODULE_FAIL; ret = rlm_rest_perform(mctx, section, handle, request, NULL, NULL); if (ret < 0) { rest_request_cleanup(inst, handle); - fr_pool_connection_release(t->pool, request, handle); + fr_rest_slab_release(handle); RETURN_MODULE_FAIL; } @@ -658,7 +656,6 @@ static unlang_action_t mod_authenticate_result(rlm_rcode_t *p_result, module_ctx_t const *mctx, request_t *request) { rlm_rest_t const *inst = talloc_get_type_abort_const(mctx->inst->data, rlm_rest_t); - rlm_rest_thread_t *t = talloc_get_type_abort(mctx->thread, rlm_rest_thread_t); rlm_rest_section_t const *section = &inst->authenticate; fr_curl_io_request_t *handle = talloc_get_type_abort(mctx->rctx, fr_curl_io_request_t); @@ -733,7 +730,7 @@ static unlang_action_t mod_authenticate_result(rlm_rcode_t *p_result, finish: rest_request_cleanup(inst, handle); - fr_pool_connection_release(t->pool, request, handle); + fr_rest_slab_release(handle); RETURN_MODULE_RCODE(rcode); } @@ -789,14 +786,14 @@ static unlang_action_t CC_HINT(nonnull) mod_authenticate(rlm_rcode_t *p_result, RDEBUG2("Login attempt with password"); } - handle = fr_pool_connection_get(t->pool, request); + handle = fr_rest_slab_reserve(t->slab); if (!handle) RETURN_MODULE_FAIL; ret = rlm_rest_perform(mctx, section, handle, request, username->vp_strvalue, password->vp_strvalue); if (ret < 0) { rest_request_cleanup(inst, handle); - fr_pool_connection_release(t->pool, request, handle); + fr_rest_slab_release(handle); RETURN_MODULE_FAIL; } @@ -807,7 +804,6 @@ static unlang_action_t CC_HINT(nonnull) mod_authenticate(rlm_rcode_t *p_result, static unlang_action_t mod_accounting_result(rlm_rcode_t *p_result, module_ctx_t const *mctx, request_t *request) { rlm_rest_t const *inst = talloc_get_type_abort_const(mctx->inst->data, rlm_rest_t); - rlm_rest_thread_t *t = talloc_get_type_abort(mctx->thread, rlm_rest_thread_t); rlm_rest_section_t const *section = &inst->authenticate; fr_curl_io_request_t *handle = talloc_get_type_abort(mctx->rctx, fr_curl_io_request_t); @@ -850,7 +846,7 @@ static unlang_action_t mod_accounting_result(rlm_rcode_t *p_result, module_ctx_t finish: rest_request_cleanup(inst, handle); - fr_pool_connection_release(t->pool, request, handle); + fr_rest_slab_release(handle); RETURN_MODULE_RCODE(rcode); } @@ -869,13 +865,13 @@ static unlang_action_t CC_HINT(nonnull) mod_accounting(rlm_rcode_t *p_result, mo if (!section->name) RETURN_MODULE_NOOP; - handle = fr_pool_connection_get(t->pool, request); + handle = fr_rest_slab_reserve(t->slab); if (!handle) RETURN_MODULE_FAIL; ret = rlm_rest_perform(mctx, section, handle, request, NULL, NULL); if (ret < 0) { rest_request_cleanup(inst, handle); - fr_pool_connection_release(t->pool, request, handle); + fr_rest_slab_release(handle); RETURN_MODULE_FAIL; } @@ -886,7 +882,6 @@ static unlang_action_t CC_HINT(nonnull) mod_accounting(rlm_rcode_t *p_result, mo static unlang_action_t mod_post_auth_result(rlm_rcode_t *p_result, module_ctx_t const *mctx, request_t *request) { rlm_rest_t const *inst = talloc_get_type_abort_const(mctx->inst->data, rlm_rest_t); - rlm_rest_thread_t *t = talloc_get_type_abort(mctx->thread, rlm_rest_thread_t); rlm_rest_section_t const *section = &inst->authenticate; fr_curl_io_request_t *handle = talloc_get_type_abort(mctx->rctx, fr_curl_io_request_t); @@ -929,7 +924,7 @@ static unlang_action_t mod_post_auth_result(rlm_rcode_t *p_result, module_ctx_t finish: rest_request_cleanup(inst, handle); - fr_pool_connection_release(t->pool, request, handle); + fr_rest_slab_release(handle); RETURN_MODULE_RCODE(rcode); } @@ -948,14 +943,14 @@ static unlang_action_t CC_HINT(nonnull) mod_post_auth(rlm_rcode_t *p_result, mod if (!section->name) RETURN_MODULE_NOOP; - handle = fr_pool_connection_get(t->pool, request); + handle = fr_rest_slab_reserve(t->slab); if (!handle) RETURN_MODULE_FAIL; ret = rlm_rest_perform(mctx, section, handle, request, NULL, NULL); if (ret < 0) { rest_request_cleanup(inst, handle); - fr_pool_connection_release(t->pool, request, handle); + fr_rest_slab_release(handle); RETURN_MODULE_FAIL; }