summaryrefslogtreecommitdiffstats
path: root/dbus/dbus-object-registry.c
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2003-08-02 01:59:14 +0000
committerHavoc Pennington <hp@redhat.com>2003-08-02 01:59:14 +0000
commitfe195a911d86d0a71349988360de65cfac1b3f86 (patch)
treed8ecdb3ff7298a83865d690640c8d78368b11833 /dbus/dbus-object-registry.c
parent8b7fe6f99dd35f32443a4e23466c8a1e4cfaa32b (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.c43
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*