diff options
Diffstat (limited to 'dbus/dbus-connection.c')
-rw-r--r-- | dbus/dbus-connection.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/dbus/dbus-connection.c b/dbus/dbus-connection.c index 66bd0645..8efa0014 100644 --- a/dbus/dbus-connection.c +++ b/dbus/dbus-connection.c @@ -92,6 +92,8 @@ struct DBusConnection int handlers_serial; /**< Increments when the handler table is changed. */ DBusDataSlot *data_slots; /**< Data slots */ int n_slots; /**< Slots allocated so far. */ + + int client_serial; /**< Client serial. Increments each time a message is sent */ }; static void _dbus_connection_free_data_slots (DBusConnection *connection); @@ -330,6 +332,7 @@ _dbus_connection_new_for_transport (DBusTransport *transport) connection->data_slots = NULL; connection->n_slots = 0; + connection->client_serial = 1; _dbus_transport_ref (transport); _dbus_transport_set_connection (transport, connection); @@ -350,6 +353,19 @@ _dbus_connection_new_for_transport (DBusTransport *transport) return NULL; } +static dbus_int32_t +_dbus_connection_get_next_client_serial (DBusConnection *connection) +{ + int serial; + + serial = connection->client_serial++; + + if (connection->client_serial < 0) + connection->client_serial = 1; + + return serial; +} + /** * Used to notify a connection when a DBusMessageHandler is * destroyed, so the connection can drop any reference @@ -580,7 +596,8 @@ dbus_connection_send_message (DBusConnection *connection, _dbus_verbose ("Message %p added to outgoing queue, %d pending to send\n", message, connection->n_outgoing); - + + _dbus_message_set_client_serial (message, _dbus_connection_get_next_client_serial (connection)); _dbus_message_lock (message); if (connection->n_outgoing == 1) |