@@ -80,7 +80,9 @@ def handle_request(cls, request, dispatcher):
8080 return
8181
8282 if isinstance (request , JSONRPC20BatchRequest ):
83- return JSONRPC20BatchResponse (* responses )
83+ response = JSONRPC20BatchResponse (* responses )
84+ response .request = request
85+ return response
8486 else :
8587 return responses [0 ]
8688
@@ -95,19 +97,21 @@ def _get_responses(cls, requests, dispatcher):
9597
9698 """
9799 for request in requests :
98- def response (** kwargs ):
99- return cls .RESPONSE_CLASS_MAP [request .JSONRPC_VERSION ](
100+ def make_response (** kwargs ):
101+ response = cls .RESPONSE_CLASS_MAP [request .JSONRPC_VERSION ](
100102 _id = request ._id , ** kwargs )
103+ response .request = request
104+ return response
101105
102106 try :
103107 method = dispatcher [request .method ]
104108 except KeyError :
105- output = response (error = JSONRPCMethodNotFound ()._data )
109+ output = make_response (error = JSONRPCMethodNotFound ()._data )
106110 else :
107111 try :
108112 result = method (* request .args , ** request .kwargs )
109113 except JSONRPCDispatchException as e :
110- output = response (error = e .error ._data )
114+ output = make_response (error = e .error ._data )
111115 except Exception as e :
112116 data = {
113117 "type" : e .__class__ .__name__ ,
@@ -119,13 +123,13 @@ def response(**kwargs):
119123
120124 if isinstance (e , TypeError ) and is_invalid_params (
121125 method , * request .args , ** request .kwargs ):
122- output = response (
126+ output = make_response (
123127 error = JSONRPCInvalidParams (data = data )._data )
124128 else :
125- output = response (
129+ output = make_response (
126130 error = JSONRPCServerError (data = data )._data )
127131 else :
128- output = response (result = result )
132+ output = make_response (result = result )
129133 finally :
130134 if not request .is_notification :
131135 yield output
0 commit comments