diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2007-10-22 12:34:36 +0000 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2007-10-22 12:34:36 +0000 |
commit | 8819986d533652d510fac50ea0a409636c3c60eb (patch) | |
tree | acc81fa15d145787a7d07898c4bc298c7a4c1865 /src/tube-dbus.c | |
parent | 134bed157858610c2df67618dbc32890a76e865c (diff) | |
download | telepathy-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.c | 14 |
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); |