[telepathy-gabble/master] stop reading on local socket if bytestreams informed us it's blocked on writing
Guillaume Desmottes
guillaume.desmottes at collabora.co.uk
Fri Apr 3 09:26:08 PDT 2009
---
src/file-transfer-channel.c | 20 ++++++++++++++++++++
1 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/src/file-transfer-channel.c b/src/file-transfer-channel.c
index c0ad6a0..7f66cc0 100644
--- a/src/file-transfer-channel.c
+++ b/src/file-transfer-channel.c
@@ -1498,8 +1498,28 @@ transport_handler (GibberTransport *transport,
}
static void
+bytestream_write_blocked_cb (GabbleBytestreamIface *bytestream,
+ gboolean blocked,
+ GabbleFileTransferChannel *self)
+{
+ if (blocked)
+ {
+ DEBUG ("bytestream blocked, stop to read data from FT socket");
+ }
+ else
+ {
+ DEBUG ("bytestream unblocked, restart to read data from FT socket");
+ }
+
+ gibber_transport_block_receiving (self->priv->transport, blocked);
+
+}
+
+static void
file_transfer_send (GabbleFileTransferChannel *self)
{
+ gabble_signal_connect_weak (self->priv->bytestream, "write-blocked",
+ G_CALLBACK (bytestream_write_blocked_cb), G_OBJECT (self));
gibber_transport_set_handler (self->priv->transport, transport_handler, self);
}
--
1.5.6.5
More information about the telepathy-commits
mailing list