[Telepathy-commits] [telepathy-gabble/master] Call socks5_handle_received_data() until there is no more data to process

Marco Barisione marco at barisione.org
Tue Jan 6 08:41:31 PST 2009


---
 src/bytestream-socks5.c |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/bytestream-socks5.c b/src/bytestream-socks5.c
index 28a5838..4cbd053 100644
--- a/src/bytestream-socks5.c
+++ b/src/bytestream-socks5.c
@@ -840,8 +840,15 @@ socks5_channel_readable_cb (GIOChannel *source,
   priv->read_buffer->len += bytes_read;
   priv->read_buffer->str[priv->read_buffer->len] = '\0';
 
-  used_bytes = socks5_handle_received_data (self, priv->read_buffer);
-  g_string_erase (priv->read_buffer, 0, used_bytes);
+  do
+    {
+      /* socks5_handle_received_data() processes the data and returns the
+       * number of bytes that have been used. 0 means that there is not enough
+       * data to do anything, so we just wait for more data from the socket */
+      used_bytes = socks5_handle_received_data (self, priv->read_buffer);
+      g_string_erase (priv->read_buffer, 0, used_bytes);
+    }
+  while (used_bytes > 0 && priv->read_buffer->len > 0);
 
   return TRUE;
 }
-- 
1.5.6.5




More information about the Telepathy-commits mailing list