summaryrefslogtreecommitdiff
path: root/dbus/dbus-auth.c
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2005-02-26 06:37:46 +0000
committerHavoc Pennington <hp@redhat.com>2005-02-26 06:37:46 +0000
commitee27481d7b7d6d9a4f41b7d641a2618dedf676dd (patch)
tree73590d01384d365c867ffa7d43e28a9b2a432c87 /dbus/dbus-auth.c
parent7ce7502e1ae23766ba40105327de787c2d1cef9d (diff)
downloaddbus-ee27481d7b7d6d9a4f41b7d641a2618dedf676dd.tar.gz
2005-02-26 Havoc Pennington <hp@redhat.com>
* doc/TODO: remove the "guid" item * test/glib/test-profile.c (no_bus_thread_func): use open_private (with_bus_thread_func): use open_private * dbus/dbus-connection.c (dbus_connection_open_private): new function that works like the old dbus_connection_open() (dbus_connection_open): now returns an existing connection if possible * dbus/dbus-server-unix.c (handle_new_client_fd_and_unlock): pass through the GUID to the transport * dbus/dbus-server.c (_dbus_server_init_base): keep around the GUID in hex-encoded form. * dbus/dbus-server-debug-pipe.c (_dbus_transport_debug_pipe_new): pass GUID argument in to the transport * dbus/dbus-transport-unix.c (_dbus_transport_new_for_fd): add guid argument * dbus/dbus-transport.c (_dbus_transport_init_base): add guid argument * dbus/dbus-auth.c (_dbus_auth_server_new): add guid argument
Diffstat (limited to 'dbus/dbus-auth.c')
-rw-r--r--dbus/dbus-auth.c29
1 files changed, 26 insertions, 3 deletions
diff --git a/dbus/dbus-auth.c b/dbus/dbus-auth.c
index 6412185b..2a1bbd4c 100644
--- a/dbus/dbus-auth.c
+++ b/dbus/dbus-auth.c
@@ -211,6 +211,8 @@ typedef struct
int failures; /**< Number of times client has been rejected */
int max_failures; /**< Number of times we reject before disconnect */
+
+ DBusString guid; /**< Our globally unique ID in hex encoding */
} DBusAuthServer;
@@ -1923,20 +1925,35 @@ process_command (DBusAuth *auth)
* @returns the new object or #NULL if no memory
*/
DBusAuth*
-_dbus_auth_server_new (void)
+_dbus_auth_server_new (const DBusString *guid)
{
DBusAuth *auth;
DBusAuthServer *server_auth;
+ DBusString guid_copy;
- auth = _dbus_auth_new (sizeof (DBusAuthServer));
- if (auth == NULL)
+ if (!_dbus_string_init (&guid_copy))
return NULL;
+ if (!_dbus_string_copy (guid, 0, &guid_copy, 0))
+ {
+ _dbus_string_free (&guid_copy);
+ return NULL;
+ }
+
+ auth = _dbus_auth_new (sizeof (DBusAuthServer));
+ if (auth == NULL)
+ {
+ _dbus_string_free (&guid_copy);
+ return NULL;
+ }
+
auth->side = auth_side_server;
auth->state = &server_state_waiting_for_auth;
server_auth = DBUS_AUTH_SERVER (auth);
+ server_auth->guid = guid_copy;
+
/* perhaps this should be per-mechanism with a lower
* max
*/
@@ -2012,6 +2029,12 @@ _dbus_auth_unref (DBusAuth *auth)
{
_dbus_list_clear (& DBUS_AUTH_CLIENT (auth)->mechs_to_try);
}
+ else
+ {
+ _dbus_assert (DBUS_AUTH_IS_SERVER (auth));
+
+ _dbus_string_free (& DBUS_AUTH_SERVER (auth)->guid);
+ }
if (auth->keyring)
_dbus_keyring_unref (auth->keyring);