From b63be74b165206e39a3576d3ad377c1cc0bf6887 Mon Sep 17 00:00:00 2001 From: William Welliver <william@welliver.org> Date: Fri, 2 Jun 2017 19:22:10 -0400 Subject: [PATCH] Protocols.HTTP: allow connection reuse when server is a hostname. --- lib/modules/Protocols.pmod/HTTP.pmod/Query.pike | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike b/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike index ec81fef28e..0b3bd4d008 100644 --- a/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike +++ b/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike @@ -588,6 +588,7 @@ string dns_lookup(string hostname) // Prefer IPv4 addresses array(string) v6 = filter(ip, has_value, ":"); array(string) v4 = ip - v6; + if (sizeof(v4)) return v4[random(sizeof(v4))]; return sizeof(v6) && v6[random(sizeof(v6))]; @@ -727,6 +728,9 @@ this_program sync_request(string server, int port, string query, this::host, this::port); close_connection(); // Close any old connection. + this::host = server; + this::port = port; + string ip = dns_lookup( server ); if(ip) server = ip; // cheaty, if host doesn't exist @@ -738,9 +742,6 @@ this_program sync_request(string server, int port, string query, error("HTTP.Query(): can't open socket; "+strerror(errno)+"\n"); } con = new_con; - - this::host = server; - this::port = port; } // prepare the request -- GitLab