From 57dd552e003481a3d08afd7a8ea1be11f4390ce2 Mon Sep 17 00:00:00 2001 From: Dominik Riebeling Date: Wed, 15 Aug 2007 20:08:02 +0000 Subject: Don't close http connection manually, the destructor will do that anyway. Fixes some download problems. Also add support for following moved documents (http status 301, 303 and 307). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14361 a1c6a512-1295-4272-9138-f99709370657 --- rbutil/rbutilqt/httpget.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/rbutil/rbutilqt/httpget.cpp b/rbutil/rbutilqt/httpget.cpp index d1c80b8aff..1f9205e58b 100644 --- a/rbutil/rbutilqt/httpget.cpp +++ b/rbutil/rbutilqt/httpget.cpp @@ -129,7 +129,6 @@ bool HttpGet::getFile(const QUrl &url) } qDebug() << "request scheduled: GET" << getRequest; - http.close(); return true; } @@ -137,7 +136,7 @@ bool HttpGet::getFile(const QUrl &url) void HttpGet::httpDone(bool error) { if (error) { - qDebug() << "Error: " << qPrintable(http.errorString()) << endl; + qDebug() << "Error: " << qPrintable(http.errorString()) << httpResponse(); } if(!outputToBuffer) outputFile->close(); @@ -173,7 +172,19 @@ void HttpGet::httpResponseHeader(const QHttpResponseHeader &resp) // if there is a network error abort all scheduled requests for // this download response = resp.statusCode(); - if(response != 200) http.abort(); + if(response != 200) { + qDebug() << "http response error:" << response << resp.reasonPhrase(); + http.abort(); + } + // 301 -- moved permanently + // 303 -- see other + // 307 -- moved temporarily + // in all cases, header: location has the correct address so we can follow. + if(response == 301 || response == 303 || response == 307) { + // start new request with new url + qDebug() << "http response" << response << "- following"; + getFile(resp.value("location")); + } } -- cgit v1.2.3