[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