summaryrefslogtreecommitdiffstats
path: root/dirmngr
diff options
context:
space:
mode:
authorNIIBE Yutaka <gniibe@fsij.org>2024-02-16 08:24:26 +0100
committerNIIBE Yutaka <gniibe@fsij.org>2024-02-16 08:24:26 +0100
commit2810b934647edd483996bee1f5f9256a162b2705 (patch)
tree3bdbcb3a1eece580a76b567a8743eb97653062cf /dirmngr
parentdirmngr: Fix the regression of use of proxy for TLS connection. (diff)
downloadgnupg2-2810b934647edd483996bee1f5f9256a162b2705.tar.xz
gnupg2-2810b934647edd483996bee1f5f9256a162b2705.zip
dirmngr: Fix keep-alive flag handling.
* dirmngr/http.c (run_proxy_connect): Set KEEP_ALIVE if not Basic Authentication. Fix resource leak of FP_WRITE. -- GnuPG-bug-id: 6997 Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
Diffstat (limited to 'dirmngr')
-rw-r--r--dirmngr/http.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/dirmngr/http.c b/dirmngr/http.c
index ac7e13241..e4c719348 100644
--- a/dirmngr/http.c
+++ b/dirmngr/http.c
@@ -2553,7 +2553,7 @@ run_proxy_connect (http_t hd, proxy_info_t proxy,
* RFC-4559 - SPNEGO-based Kerberos and NTLM HTTP Authentication
*/
auth_basic = !!proxy->uri->auth;
- hd->keep_alive = 0;
+ hd->keep_alive = !auth_basic; /* We may need to send more requests. */
/* For basic authentication we need to send just one request. */
if (auth_basic
@@ -2717,6 +2717,14 @@ run_proxy_connect (http_t hd, proxy_info_t proxy,
}
leave:
+ if (hd->keep_alive)
+ {
+ es_fclose (hd->fp_write);
+ hd->fp_write = NULL;
+ /* The close has released the cookie and thus we better set it
+ * to NULL. */
+ hd->write_cookie = NULL;
+ }
/* Restore flags, destroy stream, reset state. */
hd->flags = saved_flags;
es_fclose (hd->fp_read);