On 2017-03-10 12:11, Alexandru Ardelean wrote: > The context is that we generate some of the UCI config > for netifd via scripts/programs. > > Every once in a while, there's a goof when doing that > UCI generation, and netifd prints out the error at > stderr, but returns 0 (success) err-code. > > This change will fail the ubus call if UCI config > is invalid for /etc/config/network & /etc/config/wireless, > or could not be loaded (via uci_load()). > > Admittedly, failing the entire ubus call could > be a bit much [depending on various views]. > Probably one idea, would be to return the err-code > as a ubus reply data (via ubus_send_reply()). > Not sure. > > Signed-off-by: Alexandru Ardelean <ardeleana...@gmail.com> > --- > config.c | 10 ++++++++-- > config.h | 2 +- > main.c | 4 ++-- > netifd.h | 2 +- > ubus.c | 5 +++-- > 5 files changed, 15 insertions(+), 8 deletions(-) > > diff --git a/config.c b/config.c > index 0d965d3..d70747c 100644 > --- a/config.c > +++ b/config.c > @@ -393,16 +393,20 @@ config_init_wireless(void) > vlist_flush(&wdev->interfaces); > } > > -void > +int > config_init_all(void) > { > uci_network = config_init_package("network"); > if (!uci_network) { > fprintf(stderr, "Failed to load network config\n"); > - return; > + return -1; > } > > uci_wireless = config_init_package("wireless"); > + if (!uci_wireless) { > + fprintf(stderr, "Failed to load wireless config\n"); > + return -1; > + } > > vlist_update(&interfaces); > config_init = true; > @@ -426,4 +430,6 @@ config_init_all(void) > interface_refresh_assignments(false); > interface_start_pending(); > wireless_start_pending(); > + > + return 0; > } Failing the network config setup just because there is no wireless config (or an invalid one) is a bad idea. Please use a 'ret' variable to indicate the error without affecting runtime behavior.
- Felix _______________________________________________ Lede-dev mailing list Lede-dev@lists.infradead.org http://lists.infradead.org/mailman/listinfo/lede-dev