Christian Kamm
a25f094c4c
Checksums: Don't reupload if size and checksum are unchanged #3235
...
* Compute the content checksum (in addition to the optional
transmission checksum) during upload (.eml files only)
* Add hook to compute and compare the checksum in csync_update
* Add content checksum to database, remove transmission checksum
2015-11-23 11:59:56 +01:00
Olivier Goffart
0020211857
owncloudcmd: Don't do a check that file are older than 2s ( #4160 )
...
This is required for the smashbox test to pass
2015-11-20 15:16:09 +01:00
Olivier Goffart
0fde7f0e6b
Propagator: Keep a meaningfull error with old server and invalid file names
...
We changed the discovery code not to ignore files whose filename contains
charachter invalid on windows. (Because newer versions of the server
supports them)
Servers older than 8.1 will just say "Bad Request" as an error and it's a
regression against previous client version. So keep nice error even with
older server.
Relates to #3736
2015-10-29 12:44:08 +01:00
ckamm
251679253a
Merge pull request #3951 from ckamm/checksum
...
Checksums stored in database #3735
2015-10-29 10:40:24 +01:00
Christian Kamm
496b1e907d
Checksum: Don't lose it on metadata update #3735
...
Also improve tests.
2015-10-28 14:49:55 +01:00
Christian Kamm
566131209d
Checksum: Fixes after review
2015-10-28 14:46:20 +01:00
Christian Kamm
b7823dc648
Checksum: Put checksum type into separate column #3735
2015-10-28 14:46:20 +01:00
Markus Goetz
a6c9e8c5b4
Merge branch 'kill_legacy_propagator'
2015-10-28 11:06:50 +01:00
Christian Kamm
b9fc4c5994
Checksum: Fix recomputation when forced in cfg file #3735
...
Don't recompute the checksum on each upload when the server does not
advertise supporting checksums.
2015-10-28 09:56:39 +01:00
Christian Kamm
f1b500d3e0
Checksum: Add env variables to disable #3735
2015-10-28 09:56:39 +01:00
Christian Kamm
dff37e11eb
Propagate: Store computed checksums in db during upload #3735
2015-10-28 09:56:39 +01:00
Christian Kamm
0354289795
Checksums: Improvement in async computation and validation #3735
2015-10-28 09:56:39 +01:00
Christian Kamm
7c5e70ac3c
PropagateUpload: Fix double-emission of finished #3844
2015-10-28 09:53:54 +01:00
Markus Goetz
c8590c4468
Remove legacy propagator and neon
...
The code was already uneeded/unbuilt on Windows and OS X.
2015-10-20 17:57:43 +02:00
Markus Goetz
ccec186b98
ETagJob: Depth 0 for server >= 8.1 #3730
2015-10-19 15:31:27 +02:00
Olivier Goffart
df135a0bb2
Merge branch '2.0'
...
Conflicts:
src/gui/folder.cpp
2015-10-19 10:57:37 +02:00
Markus Goetz
0d5f2b5d31
Propagator: Reset upload blacklist if a chunk suceeds
...
For #3934
2015-10-16 10:06:45 +02:00
Phil Davis
f0e17fd9c0
libtypos comment and message typos for master
2015-10-05 09:05:09 +05:45
Christian Kamm
3cbd63a77a
Propagation: Try another sync on 423 Locked #3387
...
(cherry picked from commit 24c41ed0da
)
2015-10-02 14:49:38 +02:00
Christian Kamm
3812fd0866
Checksums: Prepare 'supported checksums' capability #3735
...
It currently always returns the empty list and thus has no effect.
2015-10-01 15:00:33 +02:00
Christian Kamm
24c41ed0da
Propagation: Try another sync on 423 Locked #3387
2015-10-01 13:05:07 +02:00
Christian Kamm
5bd631e8e7
Rename jobCompleted -> itemCompleted.
...
Because that's what's going on. A job can 'complete an item' or 'finish'.
Note that several jobs could complete the same item: a new directory
will complete on the PropagateRemoteMkdir and the PropagateDirectory
jobs.
2015-08-11 15:19:09 +02:00
Christian Kamm
fe42c1a818
Activity: Skip PropagateDirectory jobs #3580
...
Previously, PropagateDirectory jobs didn't emit the completed() signal.
Now that they do, we need to make sure to not add extra lines to the
protocol widget for them.
To accomplish that, the jobCompleted() signal now also contains the job
that completed the item.
2015-08-11 15:19:09 +02:00
Markus Goetz
fd5330b469
Propagator: Log chunk transferid
2015-07-30 17:47:06 +02:00
Markus Goetz
f01b7bb5db
Propagator: More debug output for downloads/uploads
2015-07-30 14:40:24 +02:00
Olivier Goffart
e135d4cccf
Merge remote-tracking branch 'origin/1.8'
2015-06-10 13:42:02 +02:00
Christian Kamm
2ed329e025
Improve reporting of server error messages. #3220
...
In particular the 'unsupported client version' error message
is now visible to the user when trying to connect to a
server that no longer supports the current client version.
2015-06-04 10:07:24 +02:00
Christian Kamm
4c10f1e40c
Wizard: Show server error message if possible. #3220
2015-06-03 16:33:09 +02:00
Olivier Goffart
54a42e401b
More compilation fixes after the merge
2015-05-26 12:33:19 +02:00
Olivier Goffart
6b27d2e703
Merge remote-tracking branch 'origin/1.8'
2015-05-26 12:28:31 +02:00
Olivier Goffart
3754e6c781
Disable the curruption workaround on mac and windows
...
The binaries we ship have a patched Qt
2015-05-22 14:19:44 +02:00
Olivier Goffart
6b9e123816
Merge remote-tracking branch 'origin/checksum_1.8' into 1.8
2015-05-22 10:32:37 +02:00
Olivier Goffart
9a02a0f3a8
Recall feature: Fix some style issues
2015-05-21 16:06:52 +02:00
Jakub Moscicki
4e79093f84
recall file prototype
2015-05-21 16:06:52 +02:00
Klaas Freitag
8f277e46d6
TransmissionChecksumming: Remove SyncFileItem dependency.
2015-05-21 15:51:48 +02:00
Klaas Freitag
dec3bd4a02
Some more minor cleanups based on the pull request review.
2015-05-20 22:44:12 +02:00
Klaas Freitag
5b5a636cc1
Make TransmissionChecksumValidator child of the job for auto delete.
...
That way no explicit memory management is needed as the allocation
is freed when the job (parent) is deleted automatically.
2015-05-20 16:54:04 +02:00
Klaas Freitag
17fe4c3b29
PropagateUpload: Fix typo in warn message.
2015-05-20 12:30:00 +02:00
Klaas Freitag
c7f759fedf
Propagator: Use the TransmissionChecksumValidator class.
2015-05-19 17:09:40 +02:00
Klaas Freitag
f016d25b4c
Propagate downloads: Handle checksum transmission header.
...
Read a checksum from the HTTP header, and if its there, compare the
downloaded tmp file against it. In case of corruption, schedule a
redownload.
2015-05-19 17:09:40 +02:00
Klaas Freitag
e18fd62f34
Propagator: checksum constants go to propatorjobs header.
...
So they can be used from both up- and download propagator jobs.
2015-05-19 17:09:40 +02:00
Klaas Freitag
3701fbcbfe
PropagateUpload: Add checksum calculation if required by config.
...
If the config file has an transmissionChecksum entry, a checksum
is added to the PUT requests in a header.
2015-05-19 17:09:39 +02:00
Jocelyn Turcotte
ea39e457f5
Fix the build
2015-05-12 10:35:57 +02:00
Daniel Molkentin
b54f2b3b31
Merge remote-tracking branch 'origin/1.9'
...
Conflicts:
VERSION.cmake
src/libsync/propagatedownload.cpp
src/libsync/propagateupload.cpp
2015-05-12 10:03:38 +02:00
Christian Kamm
79ac61684c
Propagator: Overwrite local data only if unchanged. #3156
2015-05-07 14:43:33 +02:00
Jocelyn Turcotte
a6500d8068
Work around the Qt PUT corruption bug with Qt < 5.4.2 #2425
...
Since QNonContiguousByteDeviceThreadForwardImpl::reset will
call UploadDevice::reset with a BlockingQueuedConnection, this
allows us to reset the HTTP channel along with its buffers
before they get the chance to be reused with a subsequent request.
2015-05-06 16:56:50 +02:00
Christian Kamm
509b83e73e
Time estimation: Avoid a progress reset before finish. #2328
...
The current algorithm doesn't care much, but resetting progress
to 0 just before completing a job is confusing anyway.
2015-04-22 10:45:41 +02:00
Jocelyn Turcotte
12d7484b85
Pass SyncFileItems by pointer instead of by value
...
Use a QSharedPointer to keep the same ownership and
continue passing the SyncFileItems as a const& when
ownership isn't taken. This allows sharing the same
allocations between the jobs and the result vectors.
This saves about 20MB of memory (off 120MB) once all
jobs are created.
2015-04-18 14:26:40 +02:00
Markus Goetz
b6fe5d2cff
Propagator: Debug output regarding OC-ETag
...
We can remove this in some time, but currently it is interesting
to see for what server setup is no ETag but an OC-ETag.
2015-03-27 13:16:11 +01:00
Jocelyn Turcotte
3c9acdf724
Fix a crash when accessing a dangling UploadDevice pointer #2984
...
This is largely a guess, but this is the only place where we use
a QIODevice to push data through QNAM and that the QIODevice isn't
a direct child of the QNetworkReply.
Fix the issue by making sure that we don't go back to the event loop
and possibly handle network events between the destruction of the
upload QIODevice and the QNetworkReply, which might lead to QNAM
dereferencing a dangling QIODevice pointer.
2015-03-23 16:14:54 +01:00
Markus Goetz
c42c9f0002
Propagator: Add comment
2015-03-13 15:48:35 +01:00
Christian Kamm
1dd3488973
Uploads: Fix big seeks on Windows. #2954
2015-03-12 13:18:08 +01:00
Olivier Goffart
4a01644625
Disable parallel uploads for server versions <= 8.0.2
...
Issue #2938
2015-03-11 11:31:51 +01:00
Olivier Goffart
46d5d22f72
PropagateUpload: also read the OC-ErrorString header from the poll job
2015-03-04 12:01:41 +01:00
Olivier Goffart
97c221d860
PropagateUpload: add a few comments
2015-03-04 12:00:55 +01:00
Markus Goetz
131cf63d8d
Propagator: Don't use 0,0 progress signals.
...
They seemed to have messed up the calculation sometimes for
the last chunk.
2015-03-03 17:46:57 +01:00
Olivier Goffart
ccbeb86140
Fix build of the legacy propagator
2015-03-03 10:05:38 +01:00
Klaas Freitag
05624e3fc8
FileSystem: Remove QFileInfo based implementations.
...
QFileInfo has to be refreshed if the underlying file has been
modified in between. That is dangerous so ckamm and me decided
to eliminate the QFileInfo based implementations.
This was triggered by a bug that the client uploaded files that
it should not have.
2015-02-27 15:27:49 +01:00
Olivier Goffart
d8b6e00fe7
Propagator: Let network propagator job understand a new header OC-ErrorString
...
This allows the server to send a readable error string in many cases
2015-02-26 15:53:09 +01:00
Christian Kamm
c37792f58f
Propagator: Upload files with future timestamps. #2880
2015-02-26 11:00:06 +01:00
Christian Kamm
f88398e776
lnk files: Fix exists() calls. #2792
2015-02-25 11:50:32 +01:00
Olivier Goffart
063271e978
propagateupload: Disable parallel chunk upload for owncloud < 8
...
Issue #2743
2015-02-12 14:50:42 +01:00
Christian Kamm
9ba88f6baf
Windows: Sync .lnk files correctly. #2792
2015-02-12 11:27:58 +01:00
Markus Goetz
1e57432aae
Propagator: Fix crash
...
This crash was uncovered when testing parallel chunks when one chunk
finished the upload. The propagate was then finished with the other
UploadDevices still being in-flight in the QNAM.
2015-02-06 11:19:41 +01:00
Volkan Gezer
eaa9c4fdf8
json capital
2015-02-05 20:41:08 +01:00
Olivier Goffart
3dd8ce08b8
Parallel chunk upload: Fix a off-by-one while saving the done chunk in the DB
...
We should assume that the chunk currently uploading is NOT done (hence the -1)
il task 405
2015-02-04 18:52:26 +01:00
Olivier Goffart
fe51ada1e8
Don't require NEON with Qt 5.4
2015-01-23 17:11:34 +01:00
Christian Kamm
0af5574951
Propagate upload: code cleanup
2015-01-14 15:20:02 +01:00
Olivier Goffart
0ae9055ea6
Propagator upload: Fix UploadDevice::seek
2015-01-14 15:08:09 +01:00
Markus Goetz
a544133d73
Propagator: Guard access to BandwidthManager
...
Shouls fix #2623
2015-01-14 14:28:47 +01:00
Christian Kamm
b3c02798a3
Propagator: Use FILE_SHARE_DELETE on Windows. #2070 #2597
2015-01-14 14:16:05 +01:00
Olivier Goffart
3ec19ee355
Propatage upload: Preload the chunk in memory and close the file
...
This should solve #2675 and #1981
By preloading the chunks in memory before sending them, we don't keep the
file open and therefore we let other program open the file for writing.
If the file is modified between two chunks, we detect that and abort anyway
2015-01-14 13:46:51 +01:00
Olivier Goffart
6a0c9fdd34
Propagate upload: Change the default chunk size to 5MiB and make chunk upload parallel
...
The server is slow to process each chunk. As a result the time between
the chunks is not neglectible. Therefore we gain a lot of time by
uploading the chunks in parallel. So the bandwitdh is used when the
server is waiting between chunks.
2015-01-14 13:46:51 +01:00
Olivier Goffart
7f1593c5d7
PropagateUpload: The PUTJob owns the chunk device, so make it a QScopedPointer instead of a QSharedPointer
2015-01-14 13:46:51 +01:00
Daniel Molkentin
c3468b7ed6
Merge remote-tracking branch 'origin/master' into accountstate
...
Conflicts:
src/gui/owncloudsetupwizard.cpp
src/gui/owncloudsetupwizard.h
src/libsync/propagatedownload.cpp
src/libsync/propagatedownload.h
2015-01-08 15:33:39 +01:00
Olivier Goffart
ab0bc75e43
PropagateUploadFileQNAM::slotUploadProgress: Fix inverted condition
...
( Apply this commit 2d8053a9df
)
2015-01-05 17:32:12 +01:00
Christian Kamm
38ebfec1fb
Use global Account/AccountState less.
...
* Use a shared pointer to Account everywhere to ensure
the instance stays alive long enough for a sync to terminate
* Folder is now tied to an AccountState
* SyncEngine and OwncloudPropagator tie to an Account and use that
for all jobs they run
Issue: Since the setup wizard currently always replaces the
account, it will always wipe all folder definitions, even when
the actual changes to the account were minor.
2014-12-18 15:39:51 +01:00
Christian Kamm
53d5de685c
Merge remote-tracking branch 'origin/1.7'
...
Conflicts:
src/gui/folder.cpp
src/gui/folder.h
src/libsync/networkjobs.cpp
src/libsync/owncloudpropagator.h
src/libsync/propagatedownload.cpp
2014-12-10 13:01:36 +01:00
Daniel Molkentin
a42709f814
Namespace fixes
2014-12-02 14:20:13 +01:00
Olivier Goffart
fb3f5d86cf
Fix compilation after merge
2014-12-01 14:41:39 +01:00
Olivier Goffart
3253cc38b2
Propagator upload: Mark error while opening the file as SoftError
...
Because otherwise a lot of error are shown to the user when
the user deletes a directory that is syncing
Task #1981
2014-12-01 12:22:52 +01:00
Olivier Goffart
734db6f932
propagate Upload: Let the poll job count for a job
...
In order to avoid that there are many concurrent poll jobs that takes
all the QNAM channel and causes timeouts of queued jobs
2014-11-24 13:33:13 +01:00
Olivier Goffart
d76e3c0488
Parallel chunk upload: abort all chunks if one of them errors out
2014-11-24 12:05:25 +01:00
Olivier Goffart
c0de20dda0
UploadDevice: reduce debug verbosity
2014-11-24 12:05:25 +01:00
Olivier Goffart
1113980b20
Propagator: Change the scheduler
...
It still needs to be a bit optimized, but it allows to paralelized jobs between directories
(this is required to paralelize the mkcol)
2014-11-18 17:35:31 +01:00
Olivier Goffart
14f5e8e32e
Move all the neon code to the _legacy files
2014-11-14 16:13:50 +01:00
Olivier Goffart
506ba022f1
Split propagator_qnam.cpp into propagateupload.cpp and propagatedownload.cpp
2014-11-11 12:17:10 +01:00