mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-07-02 19:52:01 +02:00
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.
This commit is contained in:
@ -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(
|
||||
|
Reference in New Issue
Block a user