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

List:       kde-commits
Subject:    branches/KDE/3.5/kdelibs/kioslave/http
From:       Allan Sandfeld Jensen <kde () carewolf ! com>
Date:       2007-09-26 17:08:44
Message-ID: 1190826524.330970.661.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 717341 by carewolf:

Revert r707381 which broke http-headers, and add a bit more buffer to handle
long http-headers like X-JSON which r707381 tried to fix.



 M  +12 -15    http.cc  
 M  +2 -2      http.h  


--- branches/KDE/3.5/kdelibs/kioslave/http/http.cc #717340:717341
@@ -263,11 +263,11 @@
   m_bChunked = false;
   m_iSize = NO_SIZE;
 
+  m_responseHeader.clear();
   m_qContentEncodings.clear();
   m_qTransferEncodings.clear();
   m_sContentMD5 = QString::null;
   m_strMimeType = QString::null;
-  m_responseHeader = QString::null;
 
   setMetaData("request-id", m_request.id);
 }
@@ -2647,13 +2647,10 @@
   // Send the response header if it was requested
   if ( config()->readBoolEntry("PropagateHttpHeader", false) )
   {
-    setMetaData("HTTP-Headers", m_responseHeader);
+    setMetaData("HTTP-Headers", m_responseHeader.join("\n"));
     sendMetaData();
-    //kdDebug(7113) << "(" << m_pid << ") HTTPProtocol::forwardHttpResponseHeader \
                =====" << endl;
-    //kdDebug(7113) << "(" << m_pid << m_responseHeader << endl;
   }
-
-  m_responseHeader = QString::null;
+  m_responseHeader.clear();
 }
 
 /**
@@ -2670,7 +2667,7 @@
   // Check
   if (m_request.bCachedRead)
   {
-     m_responseHeader = QString::fromLatin1("HTTP-CACHE");
+     m_responseHeader << "HTTP-CACHE";
      // Read header from cache...
      char buffer[4097];
      if (!fgets(buffer, 4096, m_request.fcache) )
@@ -2738,9 +2735,9 @@
   int maxAge = -1; // -1 = no max age, 0 already expired, > 0 = actual time
   int maxHeaderSize = 64*1024; // 64Kb to catch DOS-attacks
 
-  // read in 4096 bytes at a time (HTTP cookies can be quite large.)
+  // read in 8192 bytes at a time (HTTP cookies can be quite large.)
   int len = 0;
-  char buffer[4097];
+  char buffer[8193];
   bool cont = false;
   bool cacheValidated = false; // Revalidation was successful
   bool mayCache = true;
@@ -2843,7 +2840,7 @@
 
     // Store the the headers so they can be passed to the
     // calling application later
-    m_responseHeader += QString::fromLatin1(buf);
+    m_responseHeader << QString::fromLatin1(buf);
 
     if ((strncasecmp(buf, "HTTP", 4) == 0) ||
         (strncasecmp(buf, "ICY ", 4) == 0)) // Shoutcast support
@@ -3412,7 +3409,7 @@
 
   } while (!m_bEOF && (len || noHeader) && (headerSize < maxHeaderSize) && \
(gets(buffer, sizeof(buffer)-1)));  
-  // Send the current response before processing starts or it 
+  // Send the current response before processing starts or it
   // might never get sent...
   forwardHttpResponseHeader();
 
@@ -3611,7 +3608,7 @@
         (m_request.url.host() == u.host()) &&
         (m_request.url.protocol() == u.protocol()))
       u.setRef(m_request.url.ref());
-    
+
     m_bRedirect = true;
     m_redirectLocation = u;
 
@@ -3680,7 +3677,7 @@
                m_strMimeType != "application/x-tgz" &&
                m_strMimeType != "application/x-targz" &&
                m_strMimeType != "application/x-gzip" &&
-               m_request.url.path().right(6) == ".ps.gz" ) 
+               m_request.url.path().right(6) == ".ps.gz" )
      {
         m_qContentEncodings.remove(m_qContentEncodings.fromLast());
         m_strMimeType = QString::fromLatin1("application/x-gzpostscript");
@@ -4539,7 +4536,7 @@
   {
      if (m_request.bCachedWrite && m_request.fcache)
         closeCacheEntry();
-     else if (m_request.bCachedWrite) 
+     else if (m_request.bCachedWrite)
         kdDebug(7113) << "(" << m_pid << ") no cache file!\n";
   }
   else
@@ -4550,7 +4547,7 @@
 
   if (sz <= 1)
   {
-    /* kdDebug(7113) << "(" << m_pid << ") readBody: sz = " << KIO::number(sz) 
+    /* kdDebug(7113) << "(" << m_pid << ") readBody: sz = " << KIO::number(sz)
                      << ", responseCode =" << m_responseCode << endl; */
     if (m_responseCode >= 500 && m_responseCode <= 599)
       error(ERR_INTERNAL_SERVER, m_state.hostname);
--- branches/KDE/3.5/kdelibs/kioslave/http/http.h #717340:717341
@@ -475,7 +475,7 @@
   bool m_bEOD;
 
 //--- Settings related to a single response only
-  QString m_responseHeader; // All response headers
+  QStringList m_responseHeader; // All headers
   KURL m_redirectLocation;
   bool m_bRedirect; // Indicates current request is a redirection
 
@@ -487,7 +487,7 @@
   QByteArray m_bufReceive; // Receive buffer
   bool m_dataInternal; // Data is for internal consumption
   char m_lineBuf[1024];
-  char m_rewindBuf[4096];
+  char m_rewindBuf[8192];
   size_t m_rewindCount;
   char *m_linePtr;
   size_t m_lineCount;


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

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