CFileCurl::Exists always returns true, with an FTP address
#1
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.
Reply
#2
I just updated it on Tracker, sorry about that.

For convenience:
old
new
Reply
#3
Thanks for the patch - can you perhaps detail why it was failing in the trac ticket?

Thanks!
Jonathan
Always read the XBMC online-manual, FAQ and search the forum before posting.
Do not e-mail XBMC-Team members directly asking for support. Read/follow the forum rules.
For troubleshooting and bug reporting please make sure you read this first.


Image
Reply
#4
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.
Reply

Logout Mark Read Team Forum Stats Members Help
CFileCurl::Exists always returns true, with an FTP address0