On Fri, 2015-05-15 at 11:02 +0200, Johannes Thumshirn wrote: > Rework error handling, which leads to daemonizing later in order to get the > error handling into effect. > > Signed-off-by: Johannes Thumshirn <[email protected]> > --- > fcoemon.c | 33 ++++++++++++++++++++++++--------- > 1 file changed, 24 insertions(+), 9 deletions(-) > > diff --git a/fcoemon.c b/fcoemon.c > index 3b5210c..afda127 100644 > --- a/fcoemon.c > +++ b/fcoemon.c > @@ -3719,11 +3719,6 @@ int main(int argc, char **argv) > if (argc != optind) > fcm_usage(); > > - if (!fcm_fg && daemon(0, !fcoe_config.use_syslog)) { > - FCM_LOG("Starting daemon failed"); > - exit(EXIT_FAILURE); > - } > - > umask(0); > > /* > @@ -3770,16 +3765,36 @@ int main(int argc, char **argv) > } > > fcm_fcoe_init(); > - fcm_fc_events_init(); > - fcm_link_init(); /* NETLINK_ROUTE protocol */ > + rc = fcm_fc_events_init(); > + if (rc != 0) > + exit(1); > + > + rc = fcm_link_init(); /* NETLINK_ROUTE protocol */ > + if (rc != 0) { > + fcm_cleanup(); > + exit(1); > + } > + > fcm_dcbd_init(); > - fcm_srv_create(&srv_info); > + rc = fcm_srv_create(&srv_info); > + if (rc != 0) { > + fcm_cleanup(); > + exit(1); > + } > + > + if (!fcm_fg && daemon(0, !fcoe_config.use_syslog)) { > + FCM_LOG("Starting daemon failed"); > + fcm_cleanup(); > + exit(1); > + } > + > sa_select_set_callback(fcm_handle_changes); > > rc = sa_select_loop(); > if (rc < 0) { > FCM_LOG_ERR(rc, "select error\n"); > - exit(EXIT_FAILURE); > + fcm_cleanup(); > + exit(1); > } > fcm_dcbd_shutdown(); > fcm_srv_destroy(&srv_info);
Good to check errors before launching daemon. May be also good to have common error out for fcm_cleanup() and then exit(1). Thanks, Vasu _______________________________________________ fcoe-devel mailing list [email protected] http://lists.open-fcoe.org/mailman/listinfo/fcoe-devel
