27 #include "dbus-protocol.h"
28 #include "dbus-internals.h"
29 #include "dbus-message.h"
30 #include "dbus-marshal-validate.h"
31 #include "dbus-misc.h"
32 #include "dbus-threads-internal.h"
33 #include "dbus-connection-internal.h"
34 #include "dbus-string.h"
82 unsigned int is_well_known : 1;
100 addresses_shutdown_func (
void *data)
107 if (bus_connections[i] !=
NULL)
108 _dbus_warn_check_failed (
"dbus_shutdown() called but connections were still live. This probably means the application did not drop all its references to bus connections.");
111 bus_connection_addresses[i] =
NULL;
121 get_from_env (
char **connection_p,
129 if (s ==
NULL || *s ==
'\0')
134 return *connection_p !=
NULL;
139 init_session_address (
void)
148 "DBUS_SESSION_BUS_ADDRESS");
164 if (supported && retval)
168 else if (supported && !retval)
173 _dbus_warn (
"Dynamic session lookup supported but failed silently");
196 init_connections_unlocked (
void)
206 bus_connections[i] =
NULL;
219 _dbus_verbose (
"Filling in system bus address...\n");
222 "DBUS_SYSTEM_BUS_ADDRESS"))
236 _dbus_verbose (
" used default system bus \"%s\"\n",
240 _dbus_verbose (
" used env var system bus \"%s\"\n",
245 _dbus_verbose (
"Filling in session bus address...\n");
247 if (!init_session_address ())
256 _dbus_verbose (
"Filling in activation bus address...\n");
259 "DBUS_STARTER_ADDRESS"))
262 _dbus_verbose (
" \"%s\"\n", bus_connection_addresses[DBUS_BUS_STARTER] ?
263 bus_connection_addresses[DBUS_BUS_STARTER] :
"none set");
273 _dbus_verbose (
"Bus activation type was set to \"%s\"\n", s);
275 if (strcmp (s,
"system") == 0)
277 else if (strcmp (s,
"session") == 0)
308 bus_data_free (
void *data)
318 "when we attached bus data");
329 bus_connections[i] =
NULL;
406 if (bus_connections[i] == connection)
408 bus_connections[i] =
NULL;
426 _dbus_return_val_if_error_is_set (error,
NULL);
432 _DBUS_SET_OOM (error);
437 if (!init_connections_unlocked ())
439 _DBUS_SET_OOM (error);
455 bus_connection_addresses[activation_bus_type] !=
NULL)
456 type = activation_bus_type;
458 if (!
private && bus_connections[type] !=
NULL)
460 connection = bus_connections[type];
465 address = bus_connection_addresses[address_type];
469 "Unable to determine the address of the message bus (try 'man dbus-launch' and 'man dbus-daemon' for help)");
497 bus_connections[type] = connection;
509 bd = ensure_bus_data (connection);
517 if (connection ==
NULL)
518 _DBUS_ASSERT_ERROR_IS_SET (error);
561 return internal_bus_get (type,
FALSE, error);
593 return internal_bus_get (type,
TRUE, error);
654 _dbus_return_val_if_fail (connection !=
NULL,
FALSE);
655 _dbus_return_val_if_error_is_set (error,
FALSE);
663 _DBUS_SET_OOM (error);
668 bd = ensure_bus_data (connection);
671 _DBUS_SET_OOM (error);
677 _dbus_verbose (
"Ignoring attempt to register the same DBusConnection %s with the message bus a second time.\n",
691 _DBUS_SET_OOM (error);
709 _DBUS_SET_OOM (error);
725 _DBUS_ASSERT_ERROR_IS_SET (error);
767 const char *unique_name)
772 _dbus_return_val_if_fail (connection !=
NULL,
FALSE);
773 _dbus_return_val_if_fail (unique_name !=
NULL,
FALSE);
781 bd = ensure_bus_data (connection);
818 const char *unique_name =
NULL;
820 _dbus_return_val_if_fail (connection !=
NULL,
NULL);
829 bd = ensure_bus_data (connection);
874 _dbus_return_val_if_fail (_dbus_check_is_valid_bus_name (name),
DBUS_UID_UNSET);
880 "GetConnectionUnixUser");
884 _DBUS_SET_OOM (error);
893 _DBUS_SET_OOM (error);
904 _DBUS_ASSERT_ERROR_IS_SET (error);
910 _DBUS_ASSERT_ERROR_IS_SET (error);
919 _DBUS_ASSERT_ERROR_IS_SET (error);
926 return (
unsigned long) uid;
953 const char *v_STRING;
955 _dbus_return_val_if_fail (connection !=
NULL,
NULL);
956 _dbus_return_val_if_error_is_set (error,
NULL);
965 _DBUS_SET_OOM (error);
976 _DBUS_ASSERT_ERROR_IS_SET (error);
982 _DBUS_ASSERT_ERROR_IS_SET (error);
992 _DBUS_ASSERT_ERROR_IS_SET (error);
1002 _DBUS_SET_OOM (error);
1120 _dbus_return_val_if_fail (connection !=
NULL, 0);
1121 _dbus_return_val_if_fail (name !=
NULL, 0);
1122 _dbus_return_val_if_fail (_dbus_check_is_valid_bus_name (name), 0);
1123 _dbus_return_val_if_error_is_set (error, 0);
1130 if (message ==
NULL)
1132 _DBUS_SET_OOM (error);
1142 _DBUS_SET_OOM (error);
1153 _DBUS_ASSERT_ERROR_IS_SET (error);
1159 _DBUS_ASSERT_ERROR_IS_SET (error);
1168 _DBUS_ASSERT_ERROR_IS_SET (error);
1205 _dbus_return_val_if_fail (connection !=
NULL, 0);
1206 _dbus_return_val_if_fail (name !=
NULL, 0);
1207 _dbus_return_val_if_fail (_dbus_check_is_valid_bus_name (name), 0);
1208 _dbus_return_val_if_error_is_set (error, 0);
1215 if (message ==
NULL)
1217 _DBUS_SET_OOM (error);
1226 _DBUS_SET_OOM (error);
1237 _DBUS_ASSERT_ERROR_IS_SET (error);
1243 _DBUS_ASSERT_ERROR_IS_SET (error);
1252 _DBUS_ASSERT_ERROR_IS_SET (error);
1287 _dbus_return_val_if_fail (connection !=
NULL,
FALSE);
1288 _dbus_return_val_if_fail (name !=
NULL,
FALSE);
1289 _dbus_return_val_if_fail (_dbus_check_is_valid_bus_name (name),
FALSE);
1290 _dbus_return_val_if_error_is_set (error,
FALSE);
1296 if (message ==
NULL)
1298 _DBUS_SET_OOM (error);
1307 _DBUS_SET_OOM (error);
1316 _DBUS_ASSERT_ERROR_IS_SET (error);
1324 _DBUS_ASSERT_ERROR_IS_SET (error);
1365 _dbus_return_val_if_fail (connection !=
NULL,
FALSE);
1366 _dbus_return_val_if_fail (_dbus_check_is_valid_bus_name (name),
FALSE);
1371 "StartServiceByName");
1377 _DBUS_SET_OOM (error);
1387 _DBUS_ASSERT_ERROR_IS_SET (error);
1393 _DBUS_ASSERT_ERROR_IS_SET (error);
1398 if (result !=
NULL &&
1402 _DBUS_ASSERT_ERROR_IS_SET (error);
1425 _DBUS_ASSERT_ERROR_IS_SET (error);
1532 _dbus_return_if_fail (rule !=
NULL);
1541 _DBUS_SET_OOM (error);
1549 _DBUS_SET_OOM (error);
1553 send_no_return_values (connection, msg, error);
1582 _dbus_return_if_fail (rule !=
NULL);
1593 _DBUS_SET_OOM (error);
1597 send_no_return_values (connection, msg, error);