]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-9952: Add blade rpc error response creation
authorcolm <colm@freeswitch1>
Thu, 16 Feb 2017 02:17:13 +0000 (21:17 -0500)
committerMike Jerris <mike@jerris.com>
Wed, 22 Mar 2017 21:42:50 +0000 (17:42 -0400)
libs/libblade/src/blade_rpcproto.c
libs/libblade/src/include/blade_rpcproto.h
libs/libks/src/ks_rpcmessage.c

index 3123a771189e151d343eb643a5fc212d5da6e1b0..bedfd1c505f01981df66e5e782c72a74841667f6 100644 (file)
@@ -811,6 +811,31 @@ KS_DECLARE(ks_rpcmessageid_t) blade_rpc_create_response(cJSON *request,
        return msgid;
 }
 
+KS_DECLARE(ks_rpcmessageid_t) blade_rpc_create_errorresponse(cJSON *request,
+                                                    cJSON **errorP,
+                                                    cJSON **responseP)
+{
+       ks_rpcmessageid_t msgid = blade_rpc_create_response(request, NULL, responseP);
+
+       if (msgid) {
+
+               if      (errorP) {
+
+                       if (*errorP) {
+                               cJSON_AddItemToObject(*responseP, "error", *errorP);
+                       }
+                       else {
+                               cJSON *error = cJSON_CreateObject();
+                               cJSON_AddItemToObject(*responseP, "error", error);
+                               *errorP = error;
+                       }
+               }       
+       }       
+       
+       return msgid;   
+}
+
+
 const char BLADE_JRPC_METHOD[] = "method";
 const char BLADE_JRPC_ID[]     = "id";
 const char BLADE_JRPC_FIELDS[] = "blade";
index 3a8421c6da799e5d917c5944bd0f14aa3f35255e..f108c981e6465948d3af96b4828fb82e1d06fd07 100644 (file)
@@ -127,6 +127,10 @@ KS_DECLARE(ks_rpcmessageid_t) blade_rpc_create_response(cJSON *request,
                                                                                                        cJSON **reply,
                                                                                                        cJSON **response);
 
+KS_DECLARE(ks_rpcmessageid_t) blade_rpc_create_errorresponse(cJSON *request,
+                                                                                                       cJSON **reply,
+                                                                                                       cJSON **response);
+
 KS_DECLARE(ks_status_t) blade_rpc_parse_message(cJSON *message,
                                                                                                        char **namespace,
                                                                                                        char **method,
index 1b5e48754e346ae90867ccca2e2b57b23580100b..e950c693e8c13aa2c13a33116d152300a9e27b5d 100644 (file)
@@ -286,7 +286,7 @@ KS_DECLARE(ks_rpcmessageid_t) ks_rpcmessage_create_errorresponse(
                                                                                                cJSON **errorP, 
                                                                                                cJSON **responseP)
 {
-       ks_rpcmessageid_t msgid = ks_rpcmessage_new_response(request, errorP, responseP);
+       ks_rpcmessageid_t msgid = ks_rpcmessage_new_response(request, NULL, responseP);
        cJSON *respmsg = *responseP;
 
        if (msgid) { 
@@ -296,6 +296,9 @@ KS_DECLARE(ks_rpcmessageid_t) ks_rpcmessage_create_errorresponse(
                        *errorP = error;
                        cJSON_AddItemToObject(respmsg, ERROR, error);
                }
+               else if (errorP && *errorP) {
+                       cJSON_AddItemToObject(*responseP, ERROR, *errorP);      
+               }
        }
 
     return msgid;