From: Aki Tuomi Date: Tue, 7 Mar 2017 08:08:08 +0000 (+0200) Subject: lib-oauth2: Use http client destroy callback X-Git-Tag: 2.3.0.rc1~1967 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=477629dd338056c9f8bfe088e2da3e65d9a8d319;p=thirdparty%2Fdovecot%2Fcore.git lib-oauth2: Use http client destroy callback Avoids freeing memory early. Fixes signal 11 crash in auth --- diff --git a/src/lib-oauth2/oauth2-introspect.c b/src/lib-oauth2/oauth2-introspect.c index f3bd70489d..e0da0f892e 100644 --- a/src/lib-oauth2/oauth2-introspect.c +++ b/src/lib-oauth2/oauth2-introspect.c @@ -19,7 +19,6 @@ oauth2_introspection_callback(struct oauth2_request *req, oauth2_introspection_callback_t *callback = req->is_callback; req->is_callback = NULL; callback(res, req->is_context); - oauth2_request_free_internal(req); } static void @@ -122,6 +121,7 @@ oauth2_introspection_start(const struct oauth2_settings *set, http_client_request_set_timeout_msecs(req->req, req->set->timeout_msecs); + http_client_request_set_destroy_callback(req->req, oauth2_request_free_internal, req); http_client_request_submit(req->req); return req; diff --git a/src/lib-oauth2/oauth2-refresh.c b/src/lib-oauth2/oauth2-refresh.c index 531e1b2ca2..77a3a84c02 100644 --- a/src/lib-oauth2/oauth2-refresh.c +++ b/src/lib-oauth2/oauth2-refresh.c @@ -19,7 +19,6 @@ oauth2_refresh_callback(struct oauth2_request *req, oauth2_refresh_callback_t *callback = req->re_callback; req->re_callback = NULL; callback(res, req->re_context); - oauth2_request_free_internal(req); } static bool @@ -153,6 +152,7 @@ oauth2_refresh_start(const struct oauth2_settings *set, i_stream_unref(&is); http_client_request_set_timeout_msecs(req->req, req->set->timeout_msecs); + http_client_request_set_destroy_callback(req->req, oauth2_request_free_internal, req); http_client_request_submit(req->req); return req; diff --git a/src/lib-oauth2/oauth2-token-validate.c b/src/lib-oauth2/oauth2-token-validate.c index abcc8bbdeb..958d7461b2 100644 --- a/src/lib-oauth2/oauth2-token-validate.c +++ b/src/lib-oauth2/oauth2-token-validate.c @@ -20,7 +20,6 @@ oauth2_token_validation_callback(struct oauth2_request *req, oauth2_token_validation_callback_t *callback = req->tv_callback; req->tv_callback = NULL; callback(res, req->tv_context); - oauth2_request_free_internal(req); } static void @@ -136,6 +135,7 @@ oauth2_token_validation_start(const struct oauth2_settings *set, http_client_request_set_timeout_msecs(req->req, req->set->timeout_msecs); + http_client_request_set_destroy_callback(req->req, oauth2_request_free_internal, req); http_client_request_submit(req->req); return req;