Try CurlFile::Seek without multisession on failure
authorTrent Nelson <trent.a.b.nelson@gmail.com>
Wed, 9 Apr 2014 14:41:39 +0000 (08:41 -0600)
committerTrent Nelson <trent.a.b.nelson@gmail.com>
Sat, 12 Apr 2014 15:25:43 +0000 (09:25 -0600)
xbmc/filesystem/CurlFile.cpp

index 298c9ee..2a5175e 100644 (file)
@@ -1195,14 +1195,23 @@ int64_t CCurlFile::Seek(int64_t iFilePosition, int iWhence)
   long response = m_state->Connect(m_bufferSize);
   if(response < 0 && (m_state->m_fileSize == 0 || m_state->m_fileSize != m_state->m_filePos))
   {
-    m_seekable = false;
-    if(m_multisession && m_oldState)
+    if(m_multisession)
     {
-      delete m_state;
-      m_state = m_oldState;
-      m_oldState = NULL;
+      if (m_oldState)
+      {
+        delete m_state;
+        m_state     = m_oldState;
+        m_oldState  = NULL;
+      }
+      // Retry without mutlisession
+      m_multisession = false;
+      return Seek(iFilePosition, iWhence);
     }
-    return -1;
+    else
+    {
+      m_seekable = false;
+      return -1;
+    } 
   }
 
   SetCorrectHeaders(m_state);