aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorulion <ulion2002@gmail.com>2013-04-01 04:04:02 -0700
committerulion <ulion2002@gmail.com>2013-04-01 04:04:02 -0700
commit7d6509b76b30185ceeaea2ad23be10fe13e2685e (patch)
tree9ffdb210b7c6b0770c30148063186ad3fcb855c7
parentef8e44ee4b93baa087f132242581cd2b4cf7d5b9 (diff)
parentaaca40b9ae4bae5197bf8f021bd8d323a55931e5 (diff)
Merge pull request #2521 from ulion/curl_protocol_option_seekable
Add protocol option 'seekable' for CurlFile (http/https).
-rw-r--r--xbmc/filesystem/CurlFile.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/xbmc/filesystem/CurlFile.cpp b/xbmc/filesystem/CurlFile.cpp
index bc8f6880a7..e981229cda 100644
--- a/xbmc/filesystem/CurlFile.cpp
+++ b/xbmc/filesystem/CurlFile.cpp
@@ -771,6 +771,8 @@ void CCurlFile::ParseAndCorrectUrl(CURL &url2)
SetContentEncoding(value);
else if (name.Equals("noshout") && value.Equals("true"))
m_skipshout = true;
+ else if (name.Equals("seekable") && value.Equals("0"))
+ m_seekable = false;
else
SetRequestHeader(name, value);
}
@@ -893,6 +895,7 @@ bool CCurlFile::Open(const CURL& url)
if( m_state->m_easyHandle == NULL )
g_curlInterface.easy_aquire(url2.GetProtocol(), url2.GetHostName(), &m_state->m_easyHandle, &m_state->m_multiHandle );
+ m_seekable = true;
// setup common curl options
SetCommonOptions(m_state);
SetRequestHeaders(m_state);
@@ -933,11 +936,10 @@ bool CCurlFile::Open(const CURL& url)
if(m_state->m_httpheader.GetValue("Transfer-Encoding").Equals("chunked"))
m_state->m_fileSize = 0;
- m_seekable = false;
- if(m_state->m_fileSize > 0)
+ if(m_state->m_fileSize <= 0)
+ m_seekable = false;
+ if (m_seekable)
{
- m_seekable = true;
-
if(url2.GetProtocol().Equals("http")
|| url2.GetProtocol().Equals("https"))
{