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

Reply via email to