diff options
author | Havoc Pennington <hp@redhat.com> | 2003-08-02 01:59:14 +0000 |
---|---|---|
committer | Havoc Pennington <hp@redhat.com> | 2003-08-02 01:59:14 +0000 |
commit | fe195a911d86d0a71349988360de65cfac1b3f86 (patch) | |
tree | d8ecdb3ff7298a83865d690640c8d78368b11833 /dbus/dbus-object-registry.c | |
parent | 8b7fe6f99dd35f32443a4e23466c8a1e4cfaa32b (diff) |
2003-08-01 Havoc Pennington <hp@pobox.com>
* dbus/dbus-protocol.h (DBUS_MESSAGE_TYPE_*): introduce
a message type enum to distinguish kinds of message
(DBUS_HEADER_FLAG_NO_REPLY_EXPECTED): flag for a message
that need not be replied to
2003-08-01 Havoc Pennington <hp@pobox.com>
* dbus/dbus-marshal.c: adapt to DBusObjectID changes
(unpack_8_octets): fix no-64-bit-int bug
* dbus/dbus-object-registry.c (validate_id): validate the
connection ID bits, not just the instance ID.
* dbus/dbus-connection.c (_dbus_connection_init_id): initialize
the connection-global 33 bits of the object ID
* dbus/dbus-object-registry.c (info_from_entry): fill in
object ID in the new way
* dbus/dbus-objectid.h: rather than high/low bits, specifically
define server/client/instance bits.
Diffstat (limited to 'dbus/dbus-object-registry.c')
-rw-r--r-- | dbus/dbus-object-registry.c | 43 |
1 files changed, 33 insertions, 10 deletions
diff --git a/dbus/dbus-object-registry.c b/dbus/dbus-object-registry.c index 64320179..a550f8e2 100644 --- a/dbus/dbus-object-registry.c +++ b/dbus/dbus-object-registry.c @@ -177,12 +177,27 @@ validate_id (DBusObjectRegistry *registry, { int idx; int times_used; - dbus_uint32_t low_bits; - - low_bits = dbus_object_id_get_low_bits (object_id); + dbus_uint32_t instance_bits; + + instance_bits = dbus_object_id_get_instance_bits (object_id); - idx = ID_TO_INDEX (low_bits); - times_used = ID_TO_TIMES_USED (low_bits); + /* Verify that connection ID bits are the same */ +#ifdef DBUS_BUILD_TESTS + if (registry->connection) +#endif + { + DBusObjectID tmp_id; + + _dbus_connection_init_id (registry->connection, + &tmp_id); + dbus_object_id_set_instance_bits (&tmp_id, instance_bits); + + if (!dbus_object_id_equal (&tmp_id, object_id)) + return NULL; + } + + idx = ID_TO_INDEX (instance_bits); + times_used = ID_TO_TIMES_USED (instance_bits); if (idx >= registry->n_entries_allocated) return NULL; @@ -206,15 +221,23 @@ info_from_entry (DBusObjectRegistry *registry, #ifdef DBUS_BUILD_TESTS if (registry->connection) #endif - dbus_object_id_set_high_bits (&info->object_id, - _dbus_connection_get_id (registry->connection)); + _dbus_connection_init_id (registry->connection, + &info->object_id); #ifdef DBUS_BUILD_TESTS else - dbus_object_id_set_high_bits (&info->object_id, 1); + { + dbus_object_id_set_server_bits (&info->object_id, 1); + dbus_object_id_set_client_bits (&info->object_id, 2); + } #endif + + _dbus_assert (dbus_object_id_get_server_bits (&info->object_id) != 0); + _dbus_assert (dbus_object_id_get_client_bits (&info->object_id) != 0); - dbus_object_id_set_low_bits (&info->object_id, - ENTRY_TO_ID (entry)); + dbus_object_id_set_instance_bits (&info->object_id, + ENTRY_TO_ID (entry)); + + _dbus_assert (dbus_object_id_get_instance_bits (&info->object_id) != 0); } static DBusInterfaceEntry* |