Skip to content

Commit b3dcb3d

Browse files
committed
[tests] handle older (py)curl without HAPROXY_PROTOCOL support
Change-Id: If0c5de4bdeb2cb402b34ed4d6e4076b5e1fb2e68
1 parent da6c0d1 commit b3dcb3d

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

tests/pylt/requests.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)