Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/owncloud/client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorOlivier Goffart <ogoffart@woboq.com>2013-11-26 15:10:52 +0400
committerOlivier Goffart <ogoffart@woboq.com>2013-11-26 15:10:52 +0400
commit5c8b6ed9027d8ff8d49ad228501218dc9a3cb2a6 (patch)
treeeda39ed627a6e3dd9b15957587e0d36cfc2a58c0 /src
parentcb6918f3d5362f98421c51a4f404daf04f6d093d (diff)
Fix Remove -gzip from etag
Remove it from both "foo"-gzip and "foo-gzip" See issue #1195
Diffstat (limited to 'src')
-rw-r--r--src/mirall/owncloudpropagator.cpp37
1 files changed, 15 insertions, 22 deletions
diff --git a/src/mirall/owncloudpropagator.cpp b/src/mirall/owncloudpropagator.cpp
index 2c6022ab3..4c5cde018 100644
--- a/src/mirall/owncloudpropagator.cpp
+++ b/src/mirall/owncloudpropagator.cpp
@@ -226,6 +226,17 @@ void PropagateRemoteMkdir::start()
done(SyncFileItem::Success);
}
+static QByteArray parseEtag(const char *header) {
+ if (!header)
+ return QByteArray();
+ QByteArray arr = header;
+ arr.replace("-gzip", ""); // https://github.com/owncloud/mirall/issues/1195
+ if(arr.length() >= 2 && arr.startsWith('"') && arr.endsWith('"')) {
+ arr = arr.mid(1, arr.length() - 2);
+ }
+ return arr;
+}
+
class PropagateUploadFile: public PropagateItemJob {
public:
explicit PropagateUploadFile(OwncloudPropagator* propagator,const SyncFileItem& item)
@@ -381,11 +392,7 @@ void PropagateUploadFile::start()
ne_set_notifier(_propagator->_session, 0, 0);
if( trans->modtime_accepted ) {
- _item._etag = QByteArray(hbf_transfer_etag( trans.data() ));
- if (_item._etag.endsWith("-gzip")) {
- // https://github.com/owncloud/mirall/issues/1195
- _item._etag.chop(5);
- }
+ _item._etag = parseEtag(hbf_transfer_etag( trans.data() ));
} else {
updateMTimeAndETag(uri.data(), _item._modtime);
}
@@ -436,20 +443,6 @@ void PropagateUploadFile::start()
} while( true );
}
-static QByteArray parseEtag(ne_request *req) {
- const char *header = ne_get_response_header(req, "etag");
- QByteArray arr;
- if(header && header [0] == '"' && header[ strlen(header)-1] == '"') {
- arr = QByteArray(header + 1, strlen(header)-2);
- } else {
- arr = header;
- }
- if (arr.endsWith("-gzip")) {
- // https://github.com/owncloud/mirall/issues/1195
- arr.chop(5);
- }
- return arr;
-}
static QString parseFileId(ne_request *req) {
QString fileId;
@@ -492,7 +485,7 @@ void PropagateItemJob::updateMTimeAndETag(const char* uri, time_t mtime)
qDebug() << "Could not issue HEAD request for ETag." << ne_get_error(_propagator->_session);
_item._errorString = ne_get_error( _propagator->_session );
} else {
- _item._etag = parseEtag(req.data());
+ _item._etag = parseEtag(ne_get_response_header(req.data(), "etag"));
QString fid = parseFileId(req.data());
if( _item._fileId.isEmpty() ) {
_item._fileId = fid;
@@ -600,7 +593,7 @@ private:
return;
}
- QByteArray etag = parseEtag(req);
+ QByteArray etag = parseEtag(ne_get_response_header(req, "etag"));;
if (etag.isEmpty()) {
qDebug() << Q_FUNC_INFO << "No E-Tag reply by server, considering it invalid" << ne_get_response_header(req, "etag");
that->errorString = QLatin1String("No E-Tag received from server, check Proxy/Gateway");
@@ -754,7 +747,7 @@ void PropagateDownloadFile::start()
}
return;
}
- _item._etag = parseEtag(req.data());
+ _item._etag = parseEtag(ne_get_response_header(req.data(), "etag"));
break;
} while (1);