penguin/tinyproxy

An L4 proxy designed to act as a tiny transparent shim

devtools/close-wait/slow_client.py

raw ยท 851 bytes

#!/usr/bin/env python3
import socket
import time

HOST = "127.0.0.1"
PORT = 12800

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Make receive buffer reasonably large so the kernel can queue data
# while the application is sleeping.
s.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 8 * 1024 * 1024)

s.connect((HOST, PORT))
s.sendall(b"GET / HTTP/1.1\r\nHost: localhost\r\nConnection: close\r\n\r\n")

print("request sent; not reading for 5s")
time.sleep(5)

total = 0
chunks = []

try:
	while True:
		b = s.recv(65536)
		if not b:
			break
		chunks.append(b)
		total += len(b)
except ConnectionResetError as e:
	print(f"RESET after {total} bytes: {e}")
	raise

print(f"read total={total} bytes")
data = b"".join(chunks)

header, _, body = data.partition(b"\r\n\r\n")
print(header.decode(errors="replace"))
print(f"body bytes={len(body)}")