Kodi Community Forum
CFileCurl::Exists always returns true, with an FTP address - Printable Version

+- Kodi Community Forum (https://forum.kodi.tv)
+-- Forum: Development (https://forum.kodi.tv/forumdisplay.php?fid=32)
+--- Forum: Kodi Application (https://forum.kodi.tv/forumdisplay.php?fid=93)
+--- Thread: CFileCurl::Exists always returns true, with an FTP address (/showthread.php?tid=39891)



CFileCurl::Exists always returns true, with an FTP address - mbuchoff - 2008-11-04

This patch fixes it. Let me know how to clean it up and what else needs to be done so it can get accepted.

For simplicity, here is the old and new code:
Old: http://pastebin.com/pastebin.php?dl=m5c36b752
New: http://pastebin.com/pastebin.php?dl=ma05d1ab

Thanks.


libCURL handles weren't getting cleaned up in my previous commit - mbuchoff - 2008-11-04

I just updated it on Tracker, sorry about that.

For convenience:
old
new


- jmarshall - 2008-11-04

Thanks for the patch - can you perhaps detail why it was failing in the trac ticket?

Thanks!
Jonathan


- mbuchoff - 2008-11-05

Of course...

If CFileCurl::Exists is called on a HTTP address, g_curlinterface.easy_perform returns CURLE_HTTP_RETURNED_ERROR when the file doesn't exist. It returns CURLE_WRITE_ERROR if the http file does exist (since a write was called with a null write-buffer). Unfortunately, when dealing with an FTP file, it returns CURLE_WRITE_ERROR regardless of whether the file exists. Therefore, I needed to add a check when getting the content length to see what the content length was... if the file exists the length is at least zero (even with a file with no content), but if it fails, the length is -1.

I'm sure there is a more elegant way to do this, but I am a libCurl n00b.