summaryrefslogtreecommitdiffstats
path: root/dbus/dbus-connection.c
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@codefactory.se>2003-01-24 23:34:01 +0000
committerAnders Carlsson <andersca@codefactory.se>2003-01-24 23:34:01 +0000
commitdc6a61a15b2d9cdc6504753fa9eb0a718f99d6d8 (patch)
tree49c51aef2648d20651c44b63071ccfa441ae4f48 /dbus/dbus-connection.c
parentc514c719ec52bba3ad359580c989d0944d2f6ffe (diff)
2003-01-25 Anders Carlsson <andersca@codefactory.se>
* dbus/dbus-connection.c: (dbus_connection_send_message): Unlock the message in case it was sent earlier. (dbus_connection_send_message_with_reply_and_block): Remove the reply message from the list. * dbus/dbus-marshal.c: (_dbus_demarshal_string_array): Set array_len and new_pos correctly. (_dbus_marshal_test): Remove debug output. * dbus/dbus-message-internal.h: * dbus/dbus-message.c: (_dbus_message_get_reply_serial): New function that returns the reply serial. (_dbus_message_unlock): New function that unlocks a message and resets its header. (dbus_message_append_string_array), (dbus_message_get_fields_valist), (dbus_message_iter_get_field_type), (dbus_message_iter_get_string_array), (dbus_message_get_fields), (dbus_message_append_fields_valist): Handle string arrays. (dbus_message_set_sender): Make this function public since the bus daemon needs it. (decode_header_data): Set the reply serial to -1 initially. * dbus/dbus-message.h: Add dbus_message_set_sender.
Diffstat (limited to 'dbus/dbus-connection.c')
-rw-r--r--dbus/dbus-connection.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/dbus/dbus-connection.c b/dbus/dbus-connection.c
index e8ff5b6a..9fcabb9c 100644
--- a/dbus/dbus-connection.c
+++ b/dbus/dbus-connection.c
@@ -644,6 +644,9 @@ dbus_connection_send_message (DBusConnection *connection,
_dbus_verbose ("Message %p added to outgoing queue, %d pending to send\n",
message, connection->n_outgoing);
+ /* Unlock the message, resetting its header. */
+ _dbus_message_unlock (message);
+
serial = _dbus_connection_get_next_client_serial (connection);
_dbus_message_set_client_serial (message, serial);
@@ -728,9 +731,6 @@ dbus_connection_send_message_with_reply (DBusConnection *connection,
* time. I think there probably has to be a loop: "while (!timeout_elapsed)
* { check_for_reply_in_queue(); iterate_with_remaining_timeout(); }"
*
- * @todo need to remove the reply from the message queue, or someone
- * else might process it again later.
- *
* @param connection the connection
* @param message the message to send
* @param timeout_milliseconds timeout in milliseconds or -1 for default
@@ -771,6 +771,7 @@ dbus_connection_send_message_with_reply_and_block (DBusConnection *connectio
if (_dbus_message_get_reply_serial (reply) == client_serial)
{
+ _dbus_list_remove (&connection->incoming_messages, link);
dbus_message_ref (message);
if (result)