From: Stefan Eissing Date: Tue, 14 Feb 2023 13:29:13 +0000 (+0100) Subject: tests: make the telnet server shut down a socket gracefully X-Git-Tag: curl-7_88_1~25 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=79d0b3c0c0bb00829f10ec139dbf3823c249ae72;p=thirdparty%2Fcurl.git tests: make the telnet server shut down a socket gracefully - test 1452 failed occasionally with ECONNRESET errnos in curl when the server closed the connection in an unclean state. Closes #10509 --- diff --git a/tests/negtelnetserver.py b/tests/negtelnetserver.py index 7fe7283677..8c04bdc108 100755 --- a/tests/negtelnetserver.py +++ b/tests/negtelnetserver.py @@ -29,7 +29,9 @@ from __future__ import (absolute_import, division, print_function, import argparse import logging import os +import socket import sys +import time from util import ClosingFileHandler @@ -90,7 +92,7 @@ class NegotiatingTelnetHandler(socketserver.BaseRequestHandler): neg.send_wont("NAWS") # Get the data passed through the negotiator - data = neg.recv(1024) + data = neg.recv(4*1024) log.debug("Incoming data: %r", data) if VERIFIED_REQ.encode('utf-8') in data: @@ -109,6 +111,12 @@ class NegotiatingTelnetHandler(socketserver.BaseRequestHandler): log.debug("Sending %r", response_data) self.request.sendall(response_data) + # put some effort into making a clean socket shutdown + # that does not give the client ECONNRESET + self.request.settimeout(0.1) + self.request.recv(4*1024) + self.request.shutdown(socket.SHUT_RDWR) + except IOError: log.exception("IOError hit during request")