summaryrefslogtreecommitdiff
path: root/src/tube-dbus.c
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2007-10-22 12:34:36 +0000
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2007-10-22 12:34:36 +0000
commit8819986d533652d510fac50ea0a409636c3c60eb (patch)
treeacc81fa15d145787a7d07898c4bc298c7a4c1865 /src/tube-dbus.c
parent134bed157858610c2df67618dbc32890a76e865c (diff)
downloadtelepathy-salut-8819986d533652d510fac50ea0a409636c3c60eb.tar.gz
Echo broadcast messages that are from us (rMulticast aux bytestreams don't echo)
20071022123436-53eee-fd91c3c54857af0aac5d2f7d8024d7c2101fca97.gz
Diffstat (limited to 'src/tube-dbus.c')
-rw-r--r--src/tube-dbus.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/tube-dbus.c b/src/tube-dbus.c
index c0b97f39..3061a99a 100644
--- a/src/tube-dbus.c
+++ b/src/tube-dbus.c
@@ -208,6 +208,8 @@ filter_cb (DBusConnection *conn,
SalutTubeDBusPrivate *priv = SALUT_TUBE_DBUS_GET_PRIVATE (tube);
gchar *marshalled = NULL;
gint len;
+ const gchar *destination;
+ dbus_uint32_t serial;
if (dbus_message_get_type (msg) == DBUS_MESSAGE_TYPE_SIGNAL &&
!tp_strdiff (dbus_message_get_interface (msg),
@@ -232,6 +234,18 @@ filter_cb (DBusConnection *conn,
gibber_bytestream_iface_send (priv->bytestream, len, marshalled);
+ if (GIBBER_IS_BYTESTREAM_MUC (priv->bytestream))
+ {
+ /* In a Salut MUC we never receive messages we sent, so we need to
+ * artificially receive our own messages. */
+ destination = dbus_message_get_destination (msg);
+ if (destination == NULL || !tp_strdiff (priv->dbus_local_name,
+ destination))
+ {
+ dbus_connection_send (priv->dbus_conn, msg, &serial);
+ }
+ }
+
out:
if (marshalled != NULL)
g_free (marshalled);