[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/KDE/4.5/kdelibs/kioslave/http
From:       Dawit Alemayehu <adawit () kde ! org>
Date:       2010-07-19 5:21:09
Message-ID: 20100719052109.3C696AC76B () svn ! kde ! org
[Download RAW message or body]

SVN commit 1151495 by adawit:

Backport of r1151494 to make Gmail chat work again in kdewebkit based browsers.

 M  +8 -4      http.cpp  
 M  +1 -1      http.h  


--- branches/KDE/4.5/kdelibs/kioslave/http/http.cpp #1151494:1151495
@@ -1975,7 +1975,7 @@
     }
 }
 
-size_t HTTPProtocol::readBuffered(char *buf, size_t size)
+size_t HTTPProtocol::readBuffered(char *buf, size_t size, bool unlimited)
 {
     size_t bytesRead = 0;
     if (!m_unreadBuf.isEmpty()) {
@@ -1987,8 +1987,11 @@
         }
         m_unreadBuf.truncate(bufSize - bytesRead);
 
-        // if we have an unread buffer, return here, since we may already have enough data to
-        // complete the response, so we don't want to wait for more.
+        // If we have an unread buffer and the size of the content returned by the
+        // server is unknown, e.g. chuncked transfer, return the bytes read here since
+        // we may already have enough data to complete the response and don't want to
+        // for more. See BR# 180631.
+        if (unlimited)
         return bytesRead;
     }
     if (bytesRead < size) {
@@ -4057,7 +4060,7 @@
   else
      bytesToReceive = m_iBytesLeft;
 
-  int bytesReceived = readBuffered(m_receiveBuf.data(), bytesToReceive);
+  const int bytesReceived = readBuffered(m_receiveBuf.data(), bytesToReceive /*, false*/);
 
   if (bytesReceived <= 0)
      return -1; // Error: connection lost
@@ -4148,6 +4151,7 @@
         m_mimeTypeBuffer.resize(0);
       }
 
+      kDebug(7013) << "Sending data of size" << d.size();
       data( d );
       if (m_request.cacheTag.ioMode == WriteToCache) {
         cacheFileWritePayload(d);
--- branches/KDE/4.5/kdelibs/kioslave/http/http.h #1151494:1151495
@@ -501,7 +501,7 @@
   QByteArray m_unreadBuf;
   void clearUnreadBuffer();
   void unread(char *buf, size_t size);
-  size_t readBuffered(char *buf, size_t size);
+  size_t readBuffered(char *buf, size_t size, bool unlimited = true);
   bool readDelimitedText(char *buf, int *idx, int end, int numNewlines);
 };
 #endif
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic