summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRodrigo Moya <rodrigo.moya@collabora.co.uk>2012-05-30 16:34:24 +0200
committerRodrigo Moya <rodrigo@gnome-db.org>2012-05-30 16:34:24 +0200
commita2a45453b51211ca25c7a979e6e1062e4954d7e5 (patch)
tree787313a34c30480f51738747891363b06e30a522
parenta16d0aa956b66a3c04ac85251d035ca700f78a2e (diff)
downloaddbus-a2a45453b51211ca25c7a979e6e1062e4954d7e5.tar.gz
Don't create a separate transaction for the AF_BUS.Forwarded signal
-rw-r--r--bus/dispatch.c3
-rw-r--r--bus/driver-afbus.c18
-rw-r--r--bus/driver-afbus.h6
-rw-r--r--bus/driver.c3
4 files changed, 12 insertions, 18 deletions
diff --git a/bus/dispatch.c b/bus/dispatch.c
index 16a93cb5..fdda8ba8 100644
--- a/bus/dispatch.c
+++ b/bus/dispatch.c
@@ -134,7 +134,8 @@ bus_dispatch_matches (BusTransaction *transaction,
/* If using AF_BUS and the message came to the daemon, the client sending
* the message doesn't yet know the address for this service, so notify
* it of the address associated with the service. */
- if (!bus_driver_afbus_emit_forwarded (sender,
+ if (!bus_driver_afbus_emit_forwarded (transaction,
+ sender,
addressed_recipient,
dbus_message_get_destination (message)))
{
diff --git a/bus/driver-afbus.c b/bus/driver-afbus.c
index ab162cd7..235a52ee 100644
--- a/bus/driver-afbus.c
+++ b/bus/driver-afbus.c
@@ -212,7 +212,8 @@ bus_driver_afbus_append_unique_name (DBusConnection *connection,
}
dbus_bool_t
-bus_driver_afbus_emit_forwarded (DBusConnection *connection,
+bus_driver_afbus_emit_forwarded (BusTransaction *transaction,
+ DBusConnection *connection,
DBusConnection *addressed_recipient,
const char *service_name)
{
@@ -220,7 +221,6 @@ bus_driver_afbus_emit_forwarded (DBusConnection *connection,
long len = sizeof (address);
DBusMessage *message;
BusContext *context;
- BusTransaction *transaction = NULL;
dbus_bool_t result = FALSE;
memset (&address, 0, sizeof (address));
@@ -255,24 +255,12 @@ bus_driver_afbus_emit_forwarded (DBusConnection *connection,
goto out;
}
- /* Prepare transaction */
- context = bus_connection_get_context (connection);
- transaction = bus_transaction_new (context);
- if (transaction == NULL)
- {
- _dbus_verbose ("Could not create transaction\n");
- goto out;
- }
-
- if (bus_transaction_send (transaction, addressed_recipient, message))
+ if (bus_transaction_send (transaction, connection, message))
result = TRUE;
else
_dbus_verbose ("Could not send AF_BUS.Forwarded signal message\n");
out:
- if (transaction != NULL)
- bus_transaction_execute_and_free (transaction);
-
dbus_message_unref (message);
return result;
diff --git a/bus/driver-afbus.h b/bus/driver-afbus.h
index 90779b7e..560f543a 100644
--- a/bus/driver-afbus.h
+++ b/bus/driver-afbus.h
@@ -34,7 +34,8 @@ dbus_bool_t bus_driver_afbus_upload_match_rule (DBusConnection *connection,
DBusError *error);
dbus_bool_t bus_driver_afbus_append_unique_name (DBusConnection *connection,
DBusString *str);
-dbus_bool_t bus_driver_afbus_emit_forwarded (DBusConnection *connection,
+dbus_bool_t bus_driver_afbus_emit_forwarded (BusTransaction *transaction,
+ DBusConnection *connection,
DBusConnection *addressed_recipient,
const char *service_name);
#else
@@ -54,7 +55,8 @@ dbus_bool_t bus_driver_afbus_append_unique_name (DBusConnection *connection,
}
inline
-dbus_bool_t bus_driver_afbus_emit_forwarded (DBusConnection *connection,
+dbus_bool_t bus_driver_afbus_emit_forwarded (BusTransaction *transaction,
+ DBusConnection *connection,
DBusConnection *addressed_recipient,
const char *service_name)
{
diff --git a/bus/driver.c b/bus/driver.c
index cae4aaa4..ef85a731 100644
--- a/bus/driver.c
+++ b/bus/driver.c
@@ -616,6 +616,9 @@ bus_driver_handle_acquire_service (DBusConnection *connection,
goto out;
}
+#ifdef HAVE_AFBUS
+#endif
+
retval = TRUE;
out: