en user callbacks such as statedata() call returns -1, clixon_backend no
longer silently exits. Instead a log is printed and an RPC error is returned.
This commit is contained in:
parent
6f6ffa2319
commit
d9c126eed0
3 changed files with 17 additions and 3 deletions
|
|
@ -1,5 +1,8 @@
|
||||||
# Clixon CHANGELOG
|
# Clixon CHANGELOG
|
||||||
|
|
||||||
|
* When user callbacks such as statedata() call returns -1, clixon_backend no
|
||||||
|
longer silently exits. Instead a log is printed and an RPC error is returned.
|
||||||
|
|
||||||
* Support for non-line scrolling in CLI, eg wrap lines. Set with:
|
* Support for non-line scrolling in CLI, eg wrap lines. Set with:
|
||||||
CLICON_CLI_LINESCROLLING 0
|
CLICON_CLI_LINESCROLLING 0
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -988,8 +988,17 @@ from_client_msg(clicon_handle h,
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
if ((ret = backend_rpc_cb_call(h, xe, ce, cbret)) < 0)
|
clicon_err_reset();
|
||||||
goto done;
|
if ((ret = backend_rpc_cb_call(h, xe, ce, cbret)) < 0){
|
||||||
|
cprintf(cbret, "<rpc-reply><rpc-error>"
|
||||||
|
"<error-tag>operation-failed</error-tag>"
|
||||||
|
"<error-type>rpc</error-type>"
|
||||||
|
"<error-severity>error</error-severity>"
|
||||||
|
"<error-message>Internal error:%s</error-message>"
|
||||||
|
"</rpc-error></rpc-reply>", clicon_err_reason);
|
||||||
|
clicon_log(LOG_NOTICE, "%s Error in backend_rpc_call:%s", __FUNCTION__, xml_name(xe));
|
||||||
|
goto reply; /* Dont quit here on user callbacks */
|
||||||
|
}
|
||||||
if (ret == 0) /* not handled by callback */
|
if (ret == 0) /* not handled by callback */
|
||||||
cprintf(cbret, "<rpc-reply><rpc-error>"
|
cprintf(cbret, "<rpc-reply><rpc-error>"
|
||||||
"<error-tag>operation-failed</error-tag>"
|
"<error-tag>operation-failed</error-tag>"
|
||||||
|
|
|
||||||
|
|
@ -505,8 +505,10 @@ backend_rpc_cb_call(clicon_handle h,
|
||||||
rc = rpc_cb_list;
|
rc = rpc_cb_list;
|
||||||
do {
|
do {
|
||||||
if (strcmp(rc->rc_tag, xml_name(xe)) == 0){
|
if (strcmp(rc->rc_tag, xml_name(xe)) == 0){
|
||||||
if ((retval = rc->rc_callback(h, xe, ce, cbret, rc->rc_arg)) < 0)
|
if ((retval = rc->rc_callback(h, xe, ce, cbret, rc->rc_arg)) < 0){
|
||||||
|
clicon_debug(1, "%s Error in: %s", __FUNCTION__, rc->rc_tag);
|
||||||
goto done;
|
goto done;
|
||||||
|
}
|
||||||
else{
|
else{
|
||||||
retval = 1; /* handled */
|
retval = 1; /* handled */
|
||||||
goto done;
|
goto done;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue