2
0
Эх сурвалжийг харах

Merge pull request #284 from jnewmano/master

janssonrpc-c: allow null json error property in rpc response
Daniel-Constantin Mierla 10 жил өмнө
parent
commit
82f13f5d02

+ 6 - 3
modules/janssonrpc-c/janssonrpc_io.c

@@ -587,9 +587,12 @@ int handle_response(json_t* response)
 	return_obj = json_object();
 	return_obj = json_object();
 
 
 	json_t* error = json_object_get(response, "error");
 	json_t* error = json_object_get(response, "error");
+	// if the error value is null, we don't care
+	bool _error = error && (json_typeof(error) != JSON_NULL);
+
 	json_t* result = json_object_get(response, "result");
 	json_t* result = json_object_get(response, "result");
 
 
-	if(error) {
+	if(_error) {
 		json_object_set(return_obj, "error", error);
 		json_object_set(return_obj, "error", error);
 	}
 	}
 
 
@@ -597,7 +600,7 @@ int handle_response(json_t* response)
 		json_object_set(return_obj, "result", result);
 		json_object_set(return_obj, "result", result);
 	}
 	}
 
 
-	if ((!result && !error) || (result && error)) {
+	if ((!result && !_error) || (result && _error)) {
 		WARN("bad response\n");
 		WARN("bad response\n");
 		internal = internal_error(JRPC_ERR_BAD_RESP, req->payload);
 		internal = internal_error(JRPC_ERR_BAD_RESP, req->payload);
 		json_object_update(return_obj, internal);
 		json_object_update(return_obj, internal);
@@ -621,7 +624,7 @@ int handle_response(json_t* response)
 		goto free_and_end;
 		goto free_and_end;
 	}
 	}
 
 
-	if(error) {
+	if(_error) {
 		// get code from error
 		// get code from error
 		json_t* _code = json_object_get(error, "code");
 		json_t* _code = json_object_get(error, "code");
 		if(_code) {
 		if(_code) {