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;
87 static dbus_int32_t bus_data_slot = -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.\n");
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\n");
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)
314 bus_data_free (
void *data)
324 "when we attached bus data");
335 bus_connections[i] =
NULL;
412 if (bus_connections[i] == connection)
414 bus_connections[i] =
NULL;
432 _dbus_return_val_if_error_is_set (error,
NULL);
438 _DBUS_SET_OOM (error);
443 if (!init_connections_unlocked ())
445 _DBUS_SET_OOM (error);
461 bus_connection_addresses[activation_bus_type] !=
NULL)
462 type = activation_bus_type;
464 if (!
private && bus_connections[type] !=
NULL)
466 connection = bus_connections[type];
471 address = bus_connection_addresses[address_type];
475 "Unable to determine the address of the message bus (try 'man dbus-launch' and 'man dbus-daemon' for help)");
503 bus_connections[type] = connection;
515 bd = ensure_bus_data (connection);
523 if (connection ==
NULL)
524 _DBUS_ASSERT_ERROR_IS_SET (error);
567 return internal_bus_get (type,
FALSE, error);
599 return internal_bus_get (type,
TRUE, error);
660 _dbus_return_val_if_fail (connection !=
NULL,
FALSE);
661 _dbus_return_val_if_error_is_set (error,
FALSE);
669 _DBUS_SET_OOM (error);
674 bd = ensure_bus_data (connection);
677 _DBUS_SET_OOM (error);
683 _dbus_verbose (
"Ignoring attempt to register the same DBusConnection %s with the message bus a second time.\n",
697 _DBUS_SET_OOM (error);
715 _DBUS_SET_OOM (error);
731 _DBUS_ASSERT_ERROR_IS_SET (error);
773 const char *unique_name)
778 _dbus_return_val_if_fail (connection !=
NULL,
FALSE);
779 _dbus_return_val_if_fail (unique_name !=
NULL,
FALSE);
787 bd = ensure_bus_data (connection);
824 const char *unique_name =
NULL;
826 _dbus_return_val_if_fail (connection !=
NULL,
NULL);
835 bd = ensure_bus_data (connection);
880 _dbus_return_val_if_fail (_dbus_check_is_valid_bus_name (name),
DBUS_UID_UNSET);
886 "GetConnectionUnixUser");
890 _DBUS_SET_OOM (error);
899 _DBUS_SET_OOM (error);
910 _DBUS_ASSERT_ERROR_IS_SET (error);
916 _DBUS_ASSERT_ERROR_IS_SET (error);
925 _DBUS_ASSERT_ERROR_IS_SET (error);
932 return (
unsigned long) uid;
959 const char *v_STRING;
961 _dbus_return_val_if_fail (connection !=
NULL,
NULL);
962 _dbus_return_val_if_error_is_set (error,
NULL);
971 _DBUS_SET_OOM (error);
982 _DBUS_ASSERT_ERROR_IS_SET (error);
988 _DBUS_ASSERT_ERROR_IS_SET (error);
998 _DBUS_ASSERT_ERROR_IS_SET (error);
1008 _DBUS_SET_OOM (error);
1124 dbus_uint32_t result;
1126 _dbus_return_val_if_fail (connection !=
NULL, 0);
1127 _dbus_return_val_if_fail (name !=
NULL, 0);
1128 _dbus_return_val_if_fail (_dbus_check_is_valid_bus_name (name), 0);
1129 _dbus_return_val_if_error_is_set (error, 0);
1136 if (message ==
NULL)
1138 _DBUS_SET_OOM (error);
1148 _DBUS_SET_OOM (error);
1159 _DBUS_ASSERT_ERROR_IS_SET (error);
1165 _DBUS_ASSERT_ERROR_IS_SET (error);
1174 _DBUS_ASSERT_ERROR_IS_SET (error);
1209 dbus_uint32_t result;
1211 _dbus_return_val_if_fail (connection !=
NULL, 0);
1212 _dbus_return_val_if_fail (name !=
NULL, 0);
1213 _dbus_return_val_if_fail (_dbus_check_is_valid_bus_name (name), 0);
1214 _dbus_return_val_if_error_is_set (error, 0);
1221 if (message ==
NULL)
1223 _DBUS_SET_OOM (error);
1232 _DBUS_SET_OOM (error);
1243 _DBUS_ASSERT_ERROR_IS_SET (error);
1249 _DBUS_ASSERT_ERROR_IS_SET (error);
1258 _DBUS_ASSERT_ERROR_IS_SET (error);
1293 _dbus_return_val_if_fail (connection !=
NULL,
FALSE);
1294 _dbus_return_val_if_fail (name !=
NULL,
FALSE);
1295 _dbus_return_val_if_fail (_dbus_check_is_valid_bus_name (name),
FALSE);
1296 _dbus_return_val_if_error_is_set (error,
FALSE);
1302 if (message ==
NULL)
1304 _DBUS_SET_OOM (error);
1313 _DBUS_SET_OOM (error);
1322 _DBUS_ASSERT_ERROR_IS_SET (error);
1330 _DBUS_ASSERT_ERROR_IS_SET (error);
1364 dbus_uint32_t flags,
1365 dbus_uint32_t *result,
1371 _dbus_return_val_if_fail (connection !=
NULL,
FALSE);
1372 _dbus_return_val_if_fail (_dbus_check_is_valid_bus_name (name),
FALSE);
1377 "StartServiceByName");
1383 _DBUS_SET_OOM (error);
1393 _DBUS_ASSERT_ERROR_IS_SET (error);
1399 _DBUS_ASSERT_ERROR_IS_SET (error);
1404 if (result !=
NULL &&
1408 _DBUS_ASSERT_ERROR_IS_SET (error);
1431 _DBUS_ASSERT_ERROR_IS_SET (error);
1538 _dbus_return_if_fail (rule !=
NULL);
1547 _DBUS_SET_OOM (error);
1555 _DBUS_SET_OOM (error);
1559 send_no_return_values (connection, msg, error);
1588 _dbus_return_if_fail (rule !=
NULL);
1599 _DBUS_SET_OOM (error);
1603 send_no_return_values (connection, msg, error);