Review Request: [PATCH] Make the FTP ioslave emit mime-type of the content before actually reading it

Dawit Alemayehu adawit at kde.org
Mon Apr 18 23:29:00 BST 2011


> On April 18, 2011, 8:31 p.m., David Faure wrote:
> > kioslave/ftp/ftp.cpp, line 2405
> > <http://git.reviewboard.kde.org/r/101149/diff/3/?file=14732#file14732line2405>
> >
> >     If m_size is UnknownSize and the file is less than 1024 bytes, this code is going to hit the timeout, waiting for data to come in, that will never come in.
> >     
> >     I think that once waitForReadyRead was called once, the loop should break (after peeking, of course), if m_size==Unknown.
> 
> Dawit Alemayehu wrote:
>     That won't happen because we also check the returned size of peek:
>     
>     if (bytesRead == 0 || bytesLeft == 0) {
>         break;
>     }
>     
>     so if the file size is < 1024, but m_size is unknown then the entire file the loop will break once it reads the entire file from buffer. I already tested that this works with our trusty README file of 404 bytes from the KDE ftp site.
> 
> David Faure wrote:
>     Sorry, I don't get it. m_size=1024 (because unknown), real file size=404, bytesRead=404, bytesLeft=620 -> no break -> we go to "waitForReadyRead" until timeout.
> 
> Dawit Alemayehu wrote:
>     See new patch. I now handle that case too ; so you won't get the extra timeout condition. If bytesRead == totalSize (which is really the size we want), the it will break. Sorry about misreading your response. I thought you said it will be in an infinite loop. :)
> 
> David Faure wrote:
>     Nope, if m_size is UnknownSize, then we don't know the size we want. 1024 might be impossible to ever reach.
>     The new code makes sense, except in the case where m_size == UnknownSize. In that case, you need to break at the bottom of the while loop, I don't see another solution.

ahhh... you are indeed correct. Fixed. I added a check for m_size == UnknownSize to the if statement that results in a break.


- Dawit


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/101149/#review2733
-----------------------------------------------------------


On April 18, 2011, 9:28 p.m., Dawit Alemayehu wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/101149/
> -----------------------------------------------------------
> 
> (Updated April 18, 2011, 9:28 p.m.)
> 
> 
> Review request for kdelibs and David Faure.
> 
> 
> Summary
> -------
> 
> The attached patch changes the ftpGet function such that it emits the mime-type of the content it is about to read, before starting to read it. That way kio_ftp will work correctly if and when it is put on hold to be reused from another application. Note that the patch uses QIODevice::peek to achieve this goal.
> 
> 
> Diffs
> -----
> 
>   kioslave/ftp/ftp.h 9814c10 
>   kioslave/ftp/ftp.cpp 64f43d8 
> 
> Diff: http://git.reviewboard.kde.org/r/101149/diff
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Dawit
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20110418/4cae6a6b/attachment.htm>


More information about the kde-core-devel mailing list