propagator-ng: resume uploads

Currently i think it corrupt the files
This commit is contained in:
Olivier Goffart 2013-05-06 18:41:56 +02:00
parent 0636ae6f28
commit 685bf395be
2 changed files with 18 additions and 17 deletions

View file

@ -210,20 +210,17 @@ csync_instructions_e OwncloudPropagator::uploadFile(const SyncFileItem &item)
Q_ASSERT(trans); Q_ASSERT(trans);
state = hbf_splitlist(trans.data(), file.handle()); state = hbf_splitlist(trans.data(), file.handle());
//FIXME TODO if (const ProgressDatabase::UploadInfo* progressInfo = _progressDb->getUploadInfo(item._file)) {
#if 0 if (progressInfo->mtime == item._modtime) {
/* Reuse chunk info that was stored in database if existing. */ trans->start_id = progressInfo->chunk;
if (dav_session.chunk_info && dav_session.chunk_info->transfer_id) { trans->transfer_id = progressInfo->transferid;
DEBUG_WEBDAV("Existing chunk info %d %d ", dav_session.chunk_info->start_id, dav_session.chunk_info->transfer_id); }
trans->start_id = dav_session.chunk_info->start_id; _progressDb->remove(item._file);
trans->transfer_id = dav_session.chunk_info->transfer_id;
} }
if (state == HBF_SUCCESS && _progresscb) { //TODO
ne_set_notifier(dav_session.ctx, ne_notify_status_cb, write_ctx); //ne_set_notifier(dav_session.ctx, ne_notify_status_cb, write_ctx);
_progresscb(write_ctx->url, CSYNC_NOTIFY_START_UPLOAD, 0 , 0, dav_session.userdata);
}
#endif
if( state == HBF_SUCCESS ) { if( state == HBF_SUCCESS ) {
//chunked_total_size = trans->stat_size; //chunked_total_size = trans->stat_size;
/* Transfer all the chunks through the HTTP session using PUT. */ /* Transfer all the chunks through the HTTP session using PUT. */
@ -245,10 +242,14 @@ csync_instructions_e OwncloudPropagator::uploadFile(const SyncFileItem &item)
if( finished ) { if( finished ) {
_errorString = hbf_error_string(state); _errorString = hbf_error_string(state);
_httpStatusCode = hbf_fail_http_code(trans.data()); _httpStatusCode = hbf_fail_http_code(trans.data());
// if (dav_session.chunk_info) {
// dav_session.chunk_info->start_id = trans->start_id; if (trans->start_id > 0) {
// dav_session.chunk_info->transfer_id = trans->transfer_id; ProgressDatabase::UploadInfo pi;
// } pi.chunk = trans->start_id;
pi.transferid = trans->transfer_id;
pi.mtime = item._modtime;
_progressDb->setUploadInfo(item._file, pi);
}
return CSYNC_INSTRUCTION_ERROR; return CSYNC_INSTRUCTION_ERROR;
} }
} }

View file

@ -33,7 +33,7 @@ public:
struct UploadInfo { struct UploadInfo {
int chunk; int chunk;
int transferid; int transferid;
quint64 size; quint64 size; //currently unused
time_t mtime; time_t mtime;
}; };
typedef QHash<QString, UploadInfo > UploadInfoHash; typedef QHash<QString, UploadInfo > UploadInfoHash;