From: Nick Porter Date: Thu, 2 Feb 2023 10:04:46 +0000 (+0000) Subject: Define rest slab element initialisation callback X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2ae1b398422d89de16e7a8fdf7a52bf4317a1b90;p=thirdparty%2Ffreeradius-server.git Define rest slab element initialisation callback --- diff --git a/src/modules/rlm_rest/rlm_rest.c b/src/modules/rlm_rest/rlm_rest.c index 3f6ec041c9e..8086ad1d167 100644 --- a/src/modules/rlm_rest/rlm_rest.c +++ b/src/modules/rlm_rest/rlm_rest.c @@ -1097,6 +1097,34 @@ static int parse_sub_section(rlm_rest_t *inst, CONF_SECTION *parent, CONF_PARSER return 0; } +static int _mod_conn_free(fr_curl_io_request_t *randle) +{ + curl_easy_cleanup(randle->candle); + return 0; +} + +static int rest_conn_alloc(fr_curl_io_request_t *randle, void *uctx) +{ + rlm_rest_t const *inst = talloc_get_type_abort(uctx, rlm_rest_t); + rlm_rest_curl_context_t *curl_ctx = NULL; + + randle->candle = curl_easy_init(); + if (unlikely(!randle->candle)) { + fr_strerror_printf("Unable to initialise CURL handle"); + return -1; + } + + MEM(curl_ctx = talloc_zero(randle, rlm_rest_curl_context_t)); + curl_ctx->headers = NULL; + curl_ctx->request.instance = inst; + curl_ctx->response.instance = inst; + + randle->uctx = curl_ctx; + talloc_set_destructor(randle, _mod_conn_free); + + return 0; +} + /** Create a thread specific multihandle * * Easy handles representing requests are added to the curl multihandle