From 3a7e79478ab41af7c53ce14d9fca9815bffe1f73 Mon Sep 17 00:00:00 2001 From: Ivan Metlushko Date: Wed, 24 Jun 2020 17:49:04 +0700 Subject: [PATCH] test: retry when write to a socket fails on macOS If the socket is tearing down macOS will return EPROTOTYPE instead of EPIPE. Because python doesn't handle this internally we have to do a workaround and retry the request. See https://bugs.python.org/issue33450 --- test/functional/test_framework/authproxy.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/functional/test_framework/authproxy.py b/test/functional/test_framework/authproxy.py index 05308931e3b..81eb8812345 100644 --- a/test/functional/test_framework/authproxy.py +++ b/test/functional/test_framework/authproxy.py @@ -115,6 +115,8 @@ class AuthServiceProxy(): except OSError as e: retry = ( '[WinError 10053] An established connection was aborted by the software in your host machine' in str(e)) + # Workaround for a bug on macOS. See https://bugs.python.org/issue33450 + retry = retry or ('[Errno 41] Protocol wrong type for socket' in str(e)) if retry: self.__conn.close() self.__conn.request(method, path, postdata, headers)