Bug 124593

Summary: Connection failed or interrupt on Url Frame Redirection
Product: [Frameworks and Libraries] kio Reporter: lorenzo <fidojones>
Component: httpAssignee: Thiago Macieira <thiago>
Status: RESOLVED FIXED    
Severity: normal    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In:

Description lorenzo 2006-03-30 21:07:55 UTC
Version:           3.5.2 (using KDE Devel)
Installed from:    Compiled sources

If you visit a domain redirected by a FRAME konqueror always report (in all versions) an "interrupted connection" with a message box, and load perfect the web. Is a silly bug, and I haven't this error with others browsers.

here is the example 

http://login.esdominios.com 

<frameset rows='100%, *' frameborder=no framespacing=0 border=0>
<frame src="http://www.esdominios.com/login.php" name=mainwindow frameborder=no framespacing=0 marginheight=0 marginwidth=0></frame>
</frameset>
<noframes>
<h2>Your browser does not support frames.  We recommend upgrading your browser.</h2><br><br>
<center>Click <a href="http://www.esdominios.com/login.php">here</a> to enter the site.</center>
</noframes>
Comment 1 Javier Linares 2006-03-30 21:28:20 UTC
Same here, using konqueror 3.5.1-1 from Debian.

21:27  javier@nomada:~$ dpkg -l | grep konqueror
ii  konqueror                       3.5.1-1                     KDE's advanced file manager, web browser and document viewer
Comment 2 Thiago Macieira 2006-04-03 23:55:10 UTC
It's not a frame redirection. I can confirm this on KDE 3.5.2 r522440.
Comment 3 Dawit Alemayehu 2007-09-02 06:43:57 UTC
SVN commit 707523 by adawit:

- Do not check for m_bEOF when reading chunked data. m_bEOF is set true when read returns 0, which in chunked 
  data transfer indicates end of chunked data transfer.

BUG: 124593


 M  +7 -0      http.cc  


--- branches/KDE/3.5/kdelibs/kioslave/http/http.cc #707522:707523
@@ -4125,11 +4125,16 @@
            return -1;
         }
      }
+
+     // m_bEOF is set to true when read called from gets returns 0. For chunked reading 0
+     // means end of chunked transfer and not error. See RFC 2615 section 3.6.1
+     #if 0
      if (m_bEOF)
      {
         kdDebug(7113) << "(" << m_pid << ") EOF on Chunk header" << endl;
         return -1;
      }
+     #endif
 
      long long trunkSize = STRTOLL(m_bufReceive.data(), 0, 16);
      if (trunkSize < 0)
@@ -4163,6 +4168,8 @@
   int bytesReceived = readLimited();
   if (!m_iBytesLeft)
      m_iBytesLeft = NO_SIZE; // Don't stop, continue with next chunk
+
+  // kdDebug(7113) << "(" << m_pid << ") readChunked: BytesReceived=" << bytesReceived << endl;
   return bytesReceived;
 }