Skip to content

Instantly share code, notes, and snippets.

@max747
Created January 17, 2023 09:03
Show Gist options
  • Save max747/7b2d4be891a603249a2600aa907d4672 to your computer and use it in GitHub Desktop.
Save max747/7b2d4be891a603249a2600aa907d4672 to your computer and use it in GitHub Desktop.
Server-side implementation to reproduce "Connection reset by peer"
#!/usr/bin/env python3
import logging
import socket
import struct
import time
logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO, format="[%(levelname)s] %(message)s")
s = socket.socket(socket.AF_INET6)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# if we want to inherit this option:
#s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', 1, 0))
s.bind(('', 9999))
s.listen()
logger.info("listen")
while True:
con, addr = s.accept()
logger.info("accept from %s", addr)
con.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', 1, 0))
time.sleep(1)
con.close()
logger.info("close connection")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment