Merge authors: James Hunt (jamesodhunt) Related merge proposals: https://code.launchpad.net/~jamesodhunt/upstart/disable-system-bus/+merge/193764 proposed by: Dmitrijs Ledkovs (xnox) ------------------------------------------------------------ revno: 1555 [merge] committer: Dmitrijs Ledkovs <[email protected]> branch nick: upstart timestamp: Tue 2013-11-05 16:15:19 +0000 message: merge lp:~jamesodhunt/upstart/disable-system-bus with conflicts resolved modified: ChangeLog init/main.c init/man/init.8 util/tests/test_initctl.c
-- lp:upstart https://code.launchpad.net/~upstart-devel/upstart/trunk Your team Upstart Reviewers is subscribed to branch lp:upstart. To unsubscribe from this branch go to https://code.launchpad.net/~upstart-devel/upstart/trunk/+edit-subscription
=== modified file 'ChangeLog' --- ChangeLog 2013-11-04 11:43:30 +0000 +++ ChangeLog 2013-11-05 16:15:19 +0000 @@ -197,6 +197,14 @@ startup". - Adjusted expected shutdown times. +2013-09-19 James Hunt <[email protected]> + + * init/control.c: Typo. + * init/main.c: Add '--no-dbus' command-line option. + init/man/init.8: Added '--no-dbus' option. + * util/tests/test_initctl.c: test_no_dbus(): New test + to test '--no-dbus' option. + 2013-09-12 Steve Langasek <[email protected]> * configure.ac: === modified file 'init/main.c' --- init/main.c 2013-11-04 11:43:30 +0000 +++ init/main.c 2013-11-05 16:15:19 +0000 @@ -120,6 +120,14 @@ **/ static int disable_startup_event = FALSE; +/** + * disable_dbus: + * + * If TRUE, do not connect to a D-Bus bus + * (only connect to the private socket). + **/ +static int disable_dbus = FALSE; + extern int no_inherit_env; extern int user_mode; extern int disable_sessions; @@ -143,6 +151,9 @@ { 0, "default-console", N_("default value for console stanza"), NULL, "VALUE", NULL, console_type_setter }, + { 0, "no-dbus", N_("do not connect to a D-Bus bus"), + NULL, NULL, &disable_dbus, NULL }, + { 0, "no-inherit-env", N_("jobs will not inherit environment of init"), NULL, NULL, &no_inherit_env , NULL }, @@ -608,16 +619,21 @@ * fail (since dbus-daemon probably isn't running yet) and will try again * later - don't let ENOMEM stop us though. */ - while (control_bus_open () < 0) { - NihError *err; - int number; - - err = nih_error_get (); - number = err->number; - nih_free (err); - - if (number != ENOMEM) - break; + if (disable_dbus) { + nih_info (_("Not connecting to %s bus"), + use_session_bus ? "session" : "system"); + } else { + while (control_bus_open () < 0) { + NihError *err; + int number; + + err = nih_error_get (); + number = err->number; + nih_free (err); + + if (number != ENOMEM) + break; + } } #ifndef DEBUG @@ -950,6 +966,9 @@ { nih_assert (! user_mode); + if (disable_dbus) + return; + if (! control_bus) { char *dbus_bus_name; === modified file 'init/man/init.8' --- init/man/init.8 2013-04-02 10:19:07 +0000 +++ init/man/init.8 2013-09-19 17:38:17 +0000 @@ -84,6 +84,10 @@ .BR console "." .\" .TP +.B \-\-no\-dbus +Do not connect to a D-Bus bus. +.\" +.TP .B \-\-no\-inherit\-env Stop jobs from inheriting the initial environment. Only meaningful when running in user mode. === modified file 'util/tests/test_initctl.c' --- util/tests/test_initctl.c 2013-11-04 11:43:30 +0000 +++ util/tests/test_initctl.c 2013-11-05 16:15:19 +0000 @@ -11121,6 +11121,69 @@ } void +test_no_dbus (void) +{ + nih_local char *cmd = NULL; + char **output; + size_t lines; + pid_t upstart_pid = 0; + pid_t dbus_pid = 0; + char *extra[] = { "--no-dbus", NULL }; + + TEST_GROUP ("Test '--no-dbus'"); + + TEST_DBUS (dbus_pid); + + /*******************************************************************/ + /* First perform a sanity check */ + + TEST_FEATURE ("Ensure version can be queried normally"); + + start_upstart_common (&upstart_pid, FALSE, FALSE, NULL, NULL, NULL); + + cmd = nih_sprintf (NULL, "%s version 2>/dev/null", get_initctl ()); + TEST_NE_P (cmd, NULL); + RUN_COMMAND (NULL, cmd, &output, &lines); + TEST_EQ (lines, 1); + TEST_STR_MATCH (output[0], "init*(upstart [0-9]*"); + nih_free (output); + + STOP_UPSTART (upstart_pid); + + /*******************************************************************/ + /* Now, try with dbus disabled */ + + TEST_FEATURE ("Ensure '--no-dbus' disables D-Bus"); + + start_upstart_common (&upstart_pid, FALSE, FALSE, NULL, NULL, extra); + + cmd = nih_sprintf (NULL, "%s version 2>/dev/null", get_initctl ()); + TEST_NE_P (cmd, NULL); + RUN_COMMAND (NULL, cmd, &output, &lines); + + /* No output on stdout expected */ + TEST_EQ (lines, 0); + + /*******************************************************************/ + TEST_FEATURE ("Ensure D-Bus still disabled on SIGUSR1"); + + assert0 (kill (upstart_pid, SIGUSR1)); + + cmd = nih_sprintf (NULL, "%s version 2>/dev/null", get_initctl ()); + TEST_NE_P (cmd, NULL); + RUN_COMMAND (NULL, cmd, &output, &lines); + + /* No output on stdout expected */ + TEST_EQ (lines, 0); + + STOP_UPSTART (upstart_pid); + + /*******************************************************************/ + + TEST_DBUS_END (dbus_pid); +} + +void test_quiesce (void) { char confdir[PATH_MAX]; @@ -17029,6 +17092,7 @@ test_list_sessions (); test_quiesce (); test_umask (); + test_no_dbus (); if (in_chroot () && !dbus_configured ()) { fprintf(stderr, "\n\n"
-- upstart-devel mailing list [email protected] Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/upstart-devel
