A message system like D-Bus for Liminix, taken from OpenWRT's ubus
Find a file
Stijn Tintel 584f56a233 cli: improve error logging for call command
When the ubus "call" command fails, ubus prints "Command failed: ...".
This is fine when the call command is executed interactively by the
user. However, when the call command is executed non-interactively,
these log messages leave the user completely clueless:

  netifd: wan6 (10841): Command failed: Unknown error

  procd: /etc/rc.d/S80umdns: Failed to parse message data

These messages contain absolutely no info that explains where they come
from; it's not even clear they are coming from ubus. This makes tracking
down what's causing them virtually impossible.

Improve this situation by printing the full ubus call to stderr when
stderr is not a TTY.

Example of improved error message:
  netifd: wan (2836): Command failed: ubus call network.interface notify_proto { "action": 0, "link-up": false, "keep": false, "interface": "wan" } (Permission denied)

While one might argue not to include the JSON message in the log,
excluding it will still not help to reproduce the failed command.
As we only print the full command when stderr is not a TTY, seeing this
error means we're doing a bad ubus call somewhere, which is a bug and
should be fixed. Printing the full command makes more sense than
printing half the command and still requiring us to figure out the exact
command that failed.

Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
Acked-by: Petr Štetiar <ynezz@true.cz>
Acked-by: Jo-Philipp Wich <jo@mein.io>
2022-02-28 16:07:49 +02:00
examples examples: remove dead increments 2019-12-16 23:39:16 +01:00
lua lua: avoid truncation of large numeric values 2020-03-15 20:49:27 +01:00
tests tests: cram: fix usage test 2020-08-05 10:27:24 +02:00
.gitignore examples: split client/server code 2012-10-24 14:37:57 +02:00
.gitlab-ci.yml ci: enable unit testing 2019-12-26 09:46:05 +01:00
cli.c cli: improve error logging for call command 2022-02-28 16:07:49 +02:00
CMakeLists.txt cmake: add a possibility to set library version 2021-02-15 19:12:12 +01:00
libubus-acl.c iron out all extra compiler warnings 2019-12-16 23:39:16 +01:00
libubus-internal.h fix blob parsing vulnerability by using blob_parse_untrusted 2019-12-19 19:53:25 +01:00
libubus-io.c libubus: process pending messages in data handler if stack depth is 0 2021-09-08 12:25:31 +02:00
libubus-obj.c fix blob parsing vulnerability by using blob_parse_untrusted 2019-12-19 19:53:25 +01:00
libubus-req.c fix blob parsing vulnerability by using blob_parse_untrusted 2019-12-19 19:53:25 +01:00
libubus-sub.c libubus: fix passing the return code of the subscriber callback to the notifier 2013-03-17 18:29:38 +01:00
libubus.c libubus: introduce new status messages 2022-02-28 16:07:18 +02:00
libubus.h ubus: make libubus ready for linking into C++ 2020-01-05 17:34:03 +01:00
ubus_common.h ubus_common: remove duplicate ARRAY_SIZE and add missing include 2019-12-19 11:18:07 +01:00
ubusd.c ubusd: fix tx_queue linked list usage 2021-06-30 21:01:50 +02:00
ubusd.h ubusd: add per-client tx queue limit 2021-05-31 18:39:31 +02:00
ubusd_acl.c ubusd: log ACL init errors 2021-09-07 09:39:18 +02:00
ubusd_acl.h ubusd_acl: event send access list support 2018-10-06 20:40:24 +02:00
ubusd_event.c workaround possibly false positive uses of memory after it is freed 2019-12-19 11:18:07 +01:00
ubusd_id.c ubusd: use avl_strcmp 2012-12-11 23:38:00 +01:00
ubusd_id.h add copyright/license information 2011-06-17 16:35:11 +02:00
ubusd_main.c ubusd: log ACL init errors 2021-09-07 09:39:18 +02:00
ubusd_monitor.c ubus_monitor: workaround possibly false positive uses of memory after it is freed 2019-12-19 19:53:25 +01:00
ubusd_obj.c workaround possibly false positive uses of memory after it is freed 2019-12-19 11:18:07 +01:00
ubusd_obj.h pass ubus_msg_buf to callback of internal object 2015-06-18 19:01:17 +02:00
ubusd_proto.c ubusd: convert tx_queue to linked list 2021-05-31 14:16:19 +02:00
ubusmsg.h libubus: introduce new status messages 2022-02-28 16:07:18 +02:00