changeset 21028:7a59b4ec1ede

lib-http: client: Set conn->connect_request to NULL immediately in http_client_connection_tunnel_response(). Prevents referring to this completed request in other parts of the code.
author Stephan Bosch <stephan@dovecot.fi>
date Sun, 11 Sep 2016 19:44:32 +0200
parents 77ae935206d8
children a3a045122aa4
files src/lib-http/http-client-connection.c
diffstat 1 files changed, 4 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-http/http-client-connection.c	Sun Sep 11 17:46:10 2016 +0200
+++ b/src/lib-http/http-client-connection.c	Sun Sep 11 19:44:32 2016 +0200
@@ -1341,17 +1341,18 @@
 {
 	struct http_client_tunnel tunnel;
 	const char *name = http_client_peer_addr2str(&conn->peer->addr);
+	struct http_client_request *req = conn->connect_request;
+
+	conn->connect_request = NULL;
 
 	if (response->status != 200) {
 		http_client_peer_connection_failure(conn->peer, t_strdup_printf(
 			"Tunnel connect(%s) failed: %d %s", name,
 				response->status, response->reason));
-		conn->connect_request = NULL;
 		return;
 	}
 
-	http_client_request_start_tunnel(conn->connect_request, &tunnel);
-	conn->connect_request = NULL;
+	http_client_request_start_tunnel(req, &tunnel);
 
 	connection_init_from_streams
 		(conn->client->conn_list, &conn->conn, name, tunnel.input, tunnel.output);