qa: Account for errno not always being set for ConnectionResetError

Logging issue can be triggered by:

```diff
--- a/src/httpserver.cpp
+++ b/src/httpserver.cpp
@@ -263,6 +263,7 @@ std::string RequestMethodString(HTTPRequest::RequestMethod m)
 /** HTTP request callback */
 static void http_request_cb(struct evhttp_request* req, void* arg)
 {
+    throw std::runtime_error{"Hello"};
     evhttp_connection* conn{evhttp_request_get_connection(req)};
     // Track active requests
     {
```

http.client.RemoteDisconnected not specifying errno to ConnectionResetError-ctor:
ce4b0ede16/Lib/http/client.py (L1556C9-L1556C29)
This commit is contained in:
Hodlinator
2025-11-05 10:44:56 +01:00
parent 25c45bb0d0
commit 76e0e6087d

View File

@@ -363,10 +363,15 @@ class TestNode():
latest_error = suppress_error(f"JSONRPCException {e.error['code']}", e)
except OSError as e:
error_num = e.errno
# Work around issue where socket timeouts don't have errno set.
# https://github.com/python/cpython/issues/109601
if error_num is None and isinstance(e, TimeoutError):
error_num = errno.ETIMEDOUT
if error_num is None:
# Work around issue where socket timeouts don't have errno set.
# https://github.com/python/cpython/issues/109601
if isinstance(e, TimeoutError):
error_num = errno.ETIMEDOUT
# http.client.RemoteDisconnected inherits from this type and
# doesn't specify errno.
elif isinstance(e, ConnectionResetError):
error_num = errno.ECONNRESET
# Suppress similarly to the above JSONRPCException errors.
if error_num not in [