From e977d6e7af0d658006f243be34f927a266b0fc23 Mon Sep 17 00:00:00 2001 From: kjnash Date: Mon, 7 Nov 2022 22:06:42 +0000 Subject: library/http/http.tcl - bugfix OpenSocket to replay any requests in the socketPhQueue placeholder queue, if the socket was not created. --- library/http/http.tcl | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/library/http/http.tcl b/library/http/http.tcl index f1d5f8b..4c9f6a7 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -1753,7 +1753,20 @@ proc http::OpenSocket {token DoLater} { ConfigureNewSocket $token $sockOld $DoLater ##Log OpenSocket success $sock - token $token } result errdict]} { - ##Log OpenSocket failed $result - token $token + ##Log OpenSocket failed $result - token $token + # There may be other requests in the socketPhQueue. + # Prepare socketPlayCmd so that Finish will replay them. + if { ($state(-keepalive)) && (!$state(reusing)) + && [info exists socketPhQueue($sockOld)] + && ($socketPhQueue($sockOld) ne {}) + } { + if {$socketMapping($state(socketinfo)) ne $sockOld} { + Log "WARNING: this code should not be reached.\ + {$socketMapping($state(socketinfo)) ne $sockOld}" + } + set socketPlayCmd($state(socketinfo)) [list ReplayIfClose Wready {} $socketPhQueue($sockOld)] + set socketPhQueue($sockOld) {} + } if {[string range $result 0 20] eq {proxy connect failed:}} { # - The HTTPS proxy did not create a socket. The pre-existing value # (a "placeholder socket") is unchanged. -- cgit v0.12