27 #include "dbus-protocol.h"
28 #include "dbus-internals.h"
29 #include "dbus-message.h"
30 #include "dbus-marshal-validate.h"
31 #include "dbus-threads-internal.h"
32 #include "dbus-connection-internal.h"
33 #include "dbus-string.h"
81 unsigned int is_well_known : 1;
112 addresses_shutdown_func (
void *data)
119 if (bus_connections[i] !=
NULL)
120 _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");
123 bus_connection_addresses[i] =
NULL;
133 get_from_env (
char **connection_p,
141 if (s ==
NULL || *s ==
'\0')
146 return *connection_p !=
NULL;
151 init_session_address (
void)
160 "DBUS_SESSION_BUS_ADDRESS");
176 if (supported && retval)
180 else if (supported && !retval)
185 _dbus_warn (
"Dynamic session lookup supported but failed silently\n");
208 init_connections_unlocked (
void)
218 bus_connections[i] =
NULL;
231 _dbus_verbose (
"Filling in system bus address...\n");
234 "DBUS_SYSTEM_BUS_ADDRESS"))
248 _dbus_verbose (
" used default system bus \"%s\"\n",
252 _dbus_verbose (
" used env var system bus \"%s\"\n",
257 _dbus_verbose (
"Filling in session bus address...\n");
259 if (!init_session_address ())
268 _dbus_verbose (
"Filling in activation bus address...\n");
271 "DBUS_STARTER_ADDRESS"))
274 _dbus_verbose (
" \"%s\"\n", bus_connection_addresses[DBUS_BUS_STARTER] ?
275 bus_connection_addresses[DBUS_BUS_STARTER] :
"none set");
285 _dbus_verbose (
"Bus activation type was set to \"%s\"\n", s);
287 if (strcmp (s,
"system") == 0)
289 else if (strcmp (s,
"session") == 0)
326 bus_data_free (
void *data)
343 bus_connections[i] =
NULL;
415 if (bus_connections[i] == connection)
417 bus_connections[i] =
NULL;
435 _dbus_return_val_if_error_is_set (error,
NULL);
439 if (!init_connections_unlocked ())
442 _DBUS_SET_OOM (error);
458 bus_connection_addresses[activation_bus_type] !=
NULL)
459 type = activation_bus_type;
461 if (!
private && bus_connections[type] !=
NULL)
463 connection = bus_connections[type];
470 address = bus_connection_addresses[address_type];
474 "Unable to determine the address of the message bus (try 'man dbus-launch' and 'man dbus-daemon' for help)");
486 _DBUS_ASSERT_ERROR_IS_SET (error);
493 _DBUS_ASSERT_ERROR_IS_SET (error);
507 bus_connections[type] = connection;
517 bd = ensure_bus_data (connection);
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);
667 bd = ensure_bus_data (connection);
670 _DBUS_SET_OOM (error);
677 _dbus_verbose (
"Ignoring attempt to register the same DBusConnection %s with the message bus a second time.\n",
692 _DBUS_SET_OOM (error);
714 _DBUS_SET_OOM (error);
725 _DBUS_ASSERT_ERROR_IS_SET (error);
769 const char *unique_name)
774 _dbus_return_val_if_fail (connection !=
NULL,
FALSE);
775 _dbus_return_val_if_fail (unique_name !=
NULL,
FALSE);
779 bd = ensure_bus_data (connection);
816 const char *unique_name =
NULL;
818 _dbus_return_val_if_fail (connection !=
NULL,
NULL);
822 bd = ensure_bus_data (connection);
867 _dbus_return_val_if_fail (_dbus_check_is_valid_bus_name (name),
DBUS_UID_UNSET);
873 "GetConnectionUnixUser");
877 _DBUS_SET_OOM (error);
886 _DBUS_SET_OOM (error);
897 _DBUS_ASSERT_ERROR_IS_SET (error);
903 _DBUS_ASSERT_ERROR_IS_SET (error);
912 _DBUS_ASSERT_ERROR_IS_SET (error);
919 return (
unsigned long) uid;
946 const char *v_STRING;
948 _dbus_return_val_if_fail (connection !=
NULL,
NULL);
949 _dbus_return_val_if_error_is_set (error,
NULL);
958 _DBUS_SET_OOM (error);
969 _DBUS_ASSERT_ERROR_IS_SET (error);
975 _DBUS_ASSERT_ERROR_IS_SET (error);
985 _DBUS_ASSERT_ERROR_IS_SET (error);
995 _DBUS_SET_OOM (error);
1113 _dbus_return_val_if_fail (connection !=
NULL, 0);
1114 _dbus_return_val_if_fail (name !=
NULL, 0);
1115 _dbus_return_val_if_fail (_dbus_check_is_valid_bus_name (name), 0);
1116 _dbus_return_val_if_error_is_set (error, 0);
1123 if (message ==
NULL)
1125 _DBUS_SET_OOM (error);
1135 _DBUS_SET_OOM (error);
1146 _DBUS_ASSERT_ERROR_IS_SET (error);
1152 _DBUS_ASSERT_ERROR_IS_SET (error);
1161 _DBUS_ASSERT_ERROR_IS_SET (error);
1198 _dbus_return_val_if_fail (connection !=
NULL, 0);
1199 _dbus_return_val_if_fail (name !=
NULL, 0);
1200 _dbus_return_val_if_fail (_dbus_check_is_valid_bus_name (name), 0);
1201 _dbus_return_val_if_error_is_set (error, 0);
1208 if (message ==
NULL)
1210 _DBUS_SET_OOM (error);
1219 _DBUS_SET_OOM (error);
1230 _DBUS_ASSERT_ERROR_IS_SET (error);
1236 _DBUS_ASSERT_ERROR_IS_SET (error);
1245 _DBUS_ASSERT_ERROR_IS_SET (error);
1280 _dbus_return_val_if_fail (connection !=
NULL,
FALSE);
1281 _dbus_return_val_if_fail (name !=
NULL,
FALSE);
1282 _dbus_return_val_if_fail (_dbus_check_is_valid_bus_name (name),
FALSE);
1283 _dbus_return_val_if_error_is_set (error,
FALSE);
1289 if (message ==
NULL)
1291 _DBUS_SET_OOM (error);
1300 _DBUS_SET_OOM (error);
1309 _DBUS_ASSERT_ERROR_IS_SET (error);
1317 _DBUS_ASSERT_ERROR_IS_SET (error);
1358 _dbus_return_val_if_fail (connection !=
NULL,
FALSE);
1359 _dbus_return_val_if_fail (_dbus_check_is_valid_bus_name (name),
FALSE);
1364 "StartServiceByName");
1370 _DBUS_SET_OOM (error);
1380 _DBUS_ASSERT_ERROR_IS_SET (error);
1386 _DBUS_ASSERT_ERROR_IS_SET (error);
1391 if (result !=
NULL &&
1395 _DBUS_ASSERT_ERROR_IS_SET (error);
1418 _DBUS_ASSERT_ERROR_IS_SET (error);
1519 _dbus_return_if_fail (rule !=
NULL);
1528 _DBUS_SET_OOM (error);
1536 _DBUS_SET_OOM (error);
1540 send_no_return_values (connection, msg, error);
1569 _dbus_return_if_fail (rule !=
NULL);
1580 _DBUS_SET_OOM (error);
1584 send_no_return_values (connection, msg, error);