@@ -234,15 +234,29 @@ def run_test(self) -> bool:
234234 c .setopt (pycurl .FOLLOWLOCATION , 1 )
235235 c .setopt (pycurl .MAXREDIRS , 5 )
236236
237+ hook_connect = False
238+ send_raw_haproxy = False
239+
237240 if self .CURLOPT_HAPROXY_CLIENT_IP :
238- c .setopt (pycurl .HAPROXYPROTOCOL , 1 )
239- c .setopt (pycurl .HAPROXY_CLIENT_IP , self .CURLOPT_HAPROXY_CLIENT_IP )
241+ if hasattr (pycurl , 'HAPROXY_CLIENT_IP' ):
242+ c .setopt (pycurl .HAPROXYPROTOCOL , 1 )
243+ c .setopt (pycurl .HAPROXY_CLIENT_IP , self .CURLOPT_HAPROXY_CLIENT_IP )
244+ else :
245+ hook_connect = True
246+ send_raw_haproxy = True
240247
241248 if self .CONNECTION_SEND_INITIAL :
249+ hook_connect = True
250+
251+ if hook_connect :
242252 def opensocket (purpose , address ):
243253 sock = socket .socket (socket .AF_INET , socket .SOCK_STREAM , 0 )
244254 sock .connect (('127.0.0.2' , self .port ))
245- sock .sendall (self .CONNECTION_SEND_INITIAL )
255+ if self .CONNECTION_SEND_INITIAL :
256+ sock .sendall (self .CONNECTION_SEND_INITIAL )
257+ if send_raw_haproxy :
258+ local_ip , local_port = sock .getsockname ()
259+ sock .sendall (f"PROXY TCP4 { self .CURLOPT_HAPROXY_CLIENT_IP } 127.0.0.2 { local_port } { self .port } \r \n " .encode ())
246260 return sock
247261
248262 def setopt (curlfd , purpose ):
0 commit comments