diff options
author | Matthew Zipkin <pinheadmz@gmail.com> | 2023-07-07 15:06:35 -0400 |
---|---|---|
committer | Matthew Zipkin <pinheadmz@gmail.com> | 2024-05-14 11:28:43 -0400 |
commit | e7ee80dcf2b68684eae96070875ea13a60e3e7b0 (patch) | |
tree | fb396c1ed541789358998482c5ac86c8fe946ad4 /test/functional/test_framework | |
parent | bf1a1f1662427fbf1a43bb951364eface469bdb7 (diff) | |
download | bitcoin-e7ee80dcf2b68684eae96070875ea13a60e3e7b0.tar.xz |
rpc: JSON-RPC 2.0 should not respond to "notifications"
For JSON-RPC 2.0 requests we need to distinguish between
a missing "id" field and "id":null. This is accomplished
by making the JSONRPCRequest id property a
std::optional<UniValue> with a default value of
UniValue::VNULL.
A side-effect of this change for non-2.0 requests is that request which do not
specify an "id" field will no longer return "id": null in the response.
Diffstat (limited to 'test/functional/test_framework')
-rw-r--r-- | test/functional/test_framework/authproxy.py | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/test/functional/test_framework/authproxy.py b/test/functional/test_framework/authproxy.py index 03042877b2..7edf9f3679 100644 --- a/test/functional/test_framework/authproxy.py +++ b/test/functional/test_framework/authproxy.py @@ -160,6 +160,15 @@ class AuthServiceProxy(): raise JSONRPCException({ 'code': -342, 'message': 'missing HTTP response from server'}) + # Check for no-content HTTP status code, which can be returned when an + # RPC client requests a JSON-RPC 2.0 "notification" with no response. + # Currently this is only possible if clients call the _request() method + # directly to send a raw request. + if http_response.status == HTTPStatus.NO_CONTENT: + if len(http_response.read()) != 0: + raise JSONRPCException({'code': -342, 'message': 'Content received with NO CONTENT status code'}) + return None, http_response.status + content_type = http_response.getheader('Content-Type') if content_type != 'application/json': raise JSONRPCException( |