aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Transports
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2011-03-02 19:13:55 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2011-03-02 19:13:55 +0000
commitffef9491700965c061f4bdb7dd61c125d2eb2bf9 (patch)
treee1f08a8187996e57943c692a33d7af6b540e37a6 /src/plugins/Transports
parent402f1a35b2cbe029381fd94a2b538beb4323e3f6 (diff)
downloadqmmp-ffef9491700965c061f4bdb7dd61c125d2eb2bf9.tar.gz
qmmp-ffef9491700965c061f4bdb7dd61c125d2eb2bf9.tar.bz2
qmmp-ffef9491700965c061f4bdb7dd61c125d2eb2bf9.zip
added possibility to skip invalid tracks (Fixes issue 400) (Fixes issue
413) git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2079 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Transports')
-rw-r--r--src/plugins/Transports/http/httpinputsource.cpp1
-rw-r--r--src/plugins/Transports/http/httpstreamreader.cpp11
-rw-r--r--src/plugins/Transports/mms/mmsinputsource.cpp1
-rw-r--r--src/plugins/Transports/mms/mmsstreamreader.cpp9
4 files changed, 19 insertions, 3 deletions
diff --git a/src/plugins/Transports/http/httpinputsource.cpp b/src/plugins/Transports/http/httpinputsource.cpp
index c64a3c445..8e806cb66 100644
--- a/src/plugins/Transports/http/httpinputsource.cpp
+++ b/src/plugins/Transports/http/httpinputsource.cpp
@@ -25,6 +25,7 @@ HTTPInputSource::HTTPInputSource(const QString &url, QObject *parent) : InputSou
{
m_reader = new HttpStreamReader(url, this);
connect(m_reader, SIGNAL(ready()),SIGNAL(ready()));
+ connect(m_reader, SIGNAL(error()),SIGNAL(error()));
}
QIODevice *HTTPInputSource::ioDevice()
diff --git a/src/plugins/Transports/http/httpstreamreader.cpp b/src/plugins/Transports/http/httpstreamreader.cpp
index 83617c8a3..3df0c432c 100644
--- a/src/plugins/Transports/http/httpstreamreader.cpp
+++ b/src/plugins/Transports/http/httpstreamreader.cpp
@@ -271,6 +271,7 @@ qint64 HttpStreamReader::bytesAvailable() const
void HttpStreamReader::run()
{
qDebug("HttpStreamReader: starting download thread");
+ char errorBuffer[CURL_ERROR_SIZE];
m_handle = curl_easy_init();
//proxy
if (QmmpSettings::instance()->isProxyEnabled())
@@ -316,6 +317,8 @@ void HttpStreamReader::run()
QString user_agent = QString("qmmp/%1").arg(Qmmp::strVersion());
curl_easy_setopt(m_handle, CURLOPT_USERAGENT, qPrintable(user_agent));
curl_easy_setopt(m_handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
+ // error message
+ curl_easy_setopt(m_handle, CURLOPT_ERRORBUFFER, errorBuffer);
struct curl_slist *http200_aliases = curl_slist_append(NULL, "ICY");
struct curl_slist *http_headers = curl_slist_append(NULL, "Icy-MetaData: 1");
@@ -331,8 +334,12 @@ void HttpStreamReader::run()
qDebug("HttpStreamReader: starting libcurl");
m_mutex.unlock();
return_code = curl_easy_perform(m_handle);
- qDebug("curl_easy_perform %d", return_code);
- qDebug("HttpStreamReader: thread finished");
+ qDebug("HttpStreamReader: curl thread finished with code %d (%s)", return_code, errorBuffer);
+ if(!m_stream.aborted && !m_ready)
+ {
+ setErrorString(errorBuffer);
+ emit error();
+ }
}
qint64 HttpStreamReader::readBuffer(char* data, qint64 maxlen)
diff --git a/src/plugins/Transports/mms/mmsinputsource.cpp b/src/plugins/Transports/mms/mmsinputsource.cpp
index d6b303800..436b3c033 100644
--- a/src/plugins/Transports/mms/mmsinputsource.cpp
+++ b/src/plugins/Transports/mms/mmsinputsource.cpp
@@ -25,6 +25,7 @@ MMSInputSource::MMSInputSource(const QString &url, QObject *parent) : InputSourc
{
m_reader = new MMSStreamReader(url, this);
connect(m_reader, SIGNAL(ready()),SIGNAL(ready()));
+ connect(m_reader, SIGNAL(error()),SIGNAL(error()));
}
QIODevice *MMSInputSource::ioDevice()
diff --git a/src/plugins/Transports/mms/mmsstreamreader.cpp b/src/plugins/Transports/mms/mmsstreamreader.cpp
index 712432546..4d4ce34af 100644
--- a/src/plugins/Transports/mms/mmsstreamreader.cpp
+++ b/src/plugins/Transports/mms/mmsstreamreader.cpp
@@ -139,6 +139,8 @@ void MMSStreamReader::run()
if(!m_handle)
{
qWarning("MMSStreamReader: connection failed");
+ setErrorString("connection failed");
+ emit error();
return;
}
m_mutex.lock();
@@ -162,8 +164,13 @@ void MMSStreamReader::run()
len = mmsx_read (0, m_handle, m_buffer + m_buffer_at, to_read);
if(len < 0)
{
- qWarning("MMSStreamReader: error: %s", strerror(len));
m_mutex.unlock();
+ qWarning("MMSStreamReader: mms thread funished with code %lld (%s)", len, strerror(len));
+ if(!m_aborted && !m_ready)
+ {
+ setErrorString(strerror(len));
+ emit error();
+ }
break;
}
m_buffer_at += len;