]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
tests: make the telnet server shut down a socket gracefully
authorStefan Eissing <stefan@eissing.org>
Tue, 14 Feb 2023 13:29:13 +0000 (14:29 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 16 Feb 2023 09:05:54 +0000 (10:05 +0100)
- test 1452 failed occasionally with ECONNRESET errnos in curl when the
  server closed the connection in an unclean state.

Closes #10509

tests/negtelnetserver.py

index 7fe7283677d59aee40962f1c1f9766292a659ee5..8c04bdc108e148743bea972dccf562e29136e2fe 100755 (executable)
@@ -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")