* Actually there is an error of duplicate rpc-replies, but it should be detected in the backend not here
This commit is contained in:
Olof Hagsand 2020-12-06 11:22:26 +00:00
parent 3c014184f7
commit 344dcacf6f
3 changed files with 13 additions and 5 deletions

View file

@ -418,6 +418,10 @@ api_return_err(clicon_handle h,
goto done;
}
}
#if 1
if (clicon_debug_get())
clicon_log_xml(LOG_DEBUG, xerr, "%s Send error:", __FUNCTION__);
#endif
if (xml_name_set(xerr, "error") < 0)
goto done;
tagstr = xml_body(xtag);
@ -431,7 +435,7 @@ api_return_err(clicon_handle h,
goto done;
switch (media){
case YANG_DATA_XML:
clicon_debug(1, "%s code:%d err:%s", __FUNCTION__, code, cbuf_get(cb));
clicon_debug(1, "%s code:%d", __FUNCTION__, code);
if (pretty){
cprintf(cb, " <errors xmlns=\"urn:ietf:params:xml:ns:yang:ietf-restconf\">\n");
if (clicon_xml2cbuf(cb, xerr, 2, pretty, -1) < 0)
@ -446,7 +450,7 @@ api_return_err(clicon_handle h,
}
break;
case YANG_DATA_JSON:
clicon_debug(1, "%s code:%d err:%s", __FUNCTION__, code, cbuf_get(cb));
clicon_debug(1, "%s code:%d", __FUNCTION__, code);
if (pretty){
cprintf(cb, "{\n\"ietf-restconf:errors\" : ");
if (xml2json_cbuf(cb, xerr, pretty) < 0)

View file

@ -614,8 +614,13 @@ api_operations_post_output(clicon_handle h,
clicon_debug(1, "%s", __FUNCTION__);
/* Validate that exactly only <rpc-reply> tag with exactly one element child */
if ((xoutput = xml_child_i_type(xret, 0, CX_ELMNT)) == NULL ||
strcmp(xml_name(xoutput),"rpc-reply") != 0 ||
xml_child_nr_type(xoutput, CX_ELMNT) != 1){
strcmp(xml_name(xoutput),"rpc-reply") != 0
/* See https://github.com/clicon/clixon/issues/158
* This is an internal error, they should not be double but the error should not be detected
* here, it should be detected in the backend plugin caller.
|| xml_child_nr_type(xrpc, CX_ELMNT) != 1 XXX backend can have multiple callbacks
*/
){
if (netconf_malformed_message_xml(&xerr, "restconf RPC does not have single input") < 0)
goto done;
if ((xe = xpath_first(xerr, NULL, "rpc-error")) == NULL){

View file

@ -176,7 +176,6 @@ expectpart "$(curl $CURLOPTS -X POST -H "Content-Type: application/yang-data+xml
# Here running is empty
new "Check running empty"
expecteof "$clixon_netconf -qf $cfg" 0 "<rpc $DEFAULTNS><get-config><source><running/></source></get-config></rpc>]]>]]>" "^<rpc-reply $DEFAULTNS><data/></rpc-reply>]]>]]>$"
exit
if [ $BE -ne 0 ]; then
new "Kill backend"