Before we would only open the part of the url that the users entered.
Now if the wizardUrlPostfix is used this is should be appended to that
when opening the browser on the result page.
Samuel Alfageme [Wed, 29 Mar 2017 15:26:10 +0000 (17:26 +0200)]
Removed the coverity badge
Following the discussion on https://github.com/owncloud/client/commit/da45d99b8fed9a37df8031433e11eb574c28a8df
Also updated the link to the current building instructions.
Christian Kamm [Fri, 24 Mar 2017 14:01:50 +0000 (15:01 +0100)]
dynamic chunking: cleanup, fixes, improvements
* make target duration a client option instead of a capability
* simplify algorithm for determining chunk size significantly
* preserve chunk size for the whole propagation, not just per upload
* move options to SyncOptions to avoid depending on ConfigFile
in the propagator
* move chunk-size adjustment to after a chunk finishes, not when
a new chunk starts
ajasja [Sat, 18 Mar 2017 23:12:07 +0000 (00:12 +0100)]
Documented the usage of environment variables.
In particular the `OWNCLOUD_CHUNK_SIZE` as requested per #2449.
I looked through the code and it seems the env vars override the conf file, but I'm not 100 % sure.
The `OWNCLOUD_CRITICAL_FREE_SPACE_BYTES` and `OWNCLOUD_FREE_SPACE_BYTES` are now mentioned in two places.
Christian Kamm [Wed, 22 Mar 2017 12:22:22 +0000 (13:22 +0100)]
ShareDialog: Make "can edit" partially checked sometimes #5642
Previously the check box was checked if *any* of its sub-permissions
were granted. This can hide the fact that only a limited subset of them
are actually granted.
The new behavior is to display as "partially checked" if only some
of the sub-permissions are available. Clicking the check box itself
still toggles between granting all or none of them.
Olivier Goffart [Thu, 16 Mar 2017 13:25:08 +0000 (14:25 +0100)]
ActivityListModel: attempt to fix a crash.
The backtrace seems to indicate that the account is invalid.
I don't know how this can happen, maybe the account's display
name was changed while the app is running?
Backtrace:
Crash: EXC_BAD_ACCESS / KERN_INVALID_ADDRESS at 0x18
Module "owncloud", in OCC::AccountState::account
Module "owncloud", in OCC::ActivityListModel::data
Module "owncloud", in OCC::ActivityItemDelegate::paint
Module "QtWidgets", in QListView::paintEvent
Module "QtWidgets", in QWidget::event
Module "QtWidgets", in QFrame::event
Module "QtWidgets", in QAbstractScrollArea::viewportEvent
Module "QtWidgets", in QAbstractItemView::viewportEvent
Module "QtWidgets", in QAbstractScrollAreaFilter::eventFilter
Module "QtCore", in QCoreApplicationPrivate::sendThroughObjectEventFilters
Olivier Goffart [Thu, 16 Mar 2017 13:19:36 +0000 (14:19 +0100)]
Propagator: change order of destruction
The destructor of the PropagateItemJob will access the propagator's
_activeJobList. So the _rootJob needs to be destroyed before it.
Order of destruction is the reverse of the order of the members in
the class. So put it at the end so it can be destroyed first.
(This made TestSyncEngine::testDirDownloadWithError crash sometimes
in the master branch)
Olivier Goffart [Thu, 16 Mar 2017 08:27:17 +0000 (09:27 +0100)]
SyncEngine: fix test regression in TestChunkingNG::testCreateConflictWhileSyncing
In 8ef11a38c99c6a33b175f1ad792ec02b52f88d25, we started blacklisting
SoftError for 0 seconds. But if the two sync happen with less than
1s interval, we would still prevent them to happen.
So make sure we expire if 0 seconds have expired
Olivier Goffart [Wed, 15 Mar 2017 16:17:33 +0000 (17:17 +0100)]
Attempt to fix a crash in FolderStatusModel::slotUpdateDirectories
The backtrace looks like:
File "atomic_base.h", line 396, in QString::~QString
File "qlist.h", line 442, in OCC::FolderStatusModel::slotUpdateDirectories
This is the only QList operation, and it may crash if the list is empty.
It can be empty if the propfind returned empty results.
I'm not sure how this can be possible to have an empty list there since
the server is always supposed to return at least one entry, for the directory
itself. But it can happen if a directory was transformed in a file, or
if there is a bug on the server.
Samuel Alfageme [Wed, 15 Mar 2017 14:46:51 +0000 (15:46 +0100)]
Using different window flags on the connection method dialog (#5614)
This is a possible fix for #3850, applying custom window flags (http://doc.qt.io/qt-5.8/qt.html#WindowType-enum) on the connection method dialog. These avoid resizing the dialog and displaying a maximize button on OS X and context help button on Windows.
Christian Kamm [Tue, 7 Mar 2017 10:47:38 +0000 (11:47 +0100)]
Windows/NTFS: Do not attempt to upload inaccessible files #5544
It is possible to create files with filenames that differ
only by case in NTFS, but most operations such as stat and
open only target one of these by default.
When that happens, we want to avoid uploading incorrect data
and give up on the file.
Typically this situation should never occurr during normal use
of Windows. It can happen, however, when a NTFS partition is
mounted in another OS.
Matthew Setter [Fri, 10 Mar 2017 07:35:55 +0000 (08:35 +0100)]
Revise the point about starting a clean sync
On review, after feedback from @phil-davis, he's right that users need
to be fully briefed as to the implications of choosing a clean sync —
especially when they have a large amount of data in their account.
Olivier Goffart [Thu, 9 Mar 2017 08:41:36 +0000 (09:41 +0100)]
Propagator: Attempt to fix a crash in OwncloudPropagator::scheduleNextJob
The crash reporter shows many crashes in OwncloudPropagator::scheduleNextJob.
We don't really know what could be the cause, but it's probably because
the _activeJobList contains dangling pointer.
So this patch makes sure to remove all the jobs from this list as they get
destroyed.
* For requests:
- reuse the original QNetworkRequest, so headers and attributes
are the same as in the original request
- determine the original http method from the reply and the request
attributes
- keep the original request body around such that it can be sent
again in case the request is redirected
* Simplify the interface that is used for creating new requests in
AbstractNetworkJob.
Olivier Goffart [Mon, 6 Mar 2017 15:14:09 +0000 (16:14 +0100)]
ActivityListModel: fix possible crash in slotActivitiesReceived
Backtrace from the crash reporter:
Crash: EXCEPTION_ACCESS_VIOLATION_READ at 0x401
File "moc_activitylistmo_M5OEXJ7XGJYTWT.cpp", line 92, in OCC::ActivityListModel::qt_static_metacall
File "qobject.cpp", line 3730, in QMetaObject::activate
File "moc_networkjobs_7AMNCW4BBANVRK.cpp", line 1342, in OCC::JsonApiJob::jsonReceived
File "networkjobs.cpp", line 714, in OCC::JsonApiJob::finished
File "abstractnetworkjob.cpp", line 207, in OCC::AbstractNetworkJob::slotFinished
File "moc_abstractnetwor_PFI2TXGQHRE33H.cpp", line 98, in OCC::AbstractNetworkJob::qt_static_metacall
File "qobject.cpp", line 3730, in QMetaObject::activate
File "moc_qnetworkreply.cpp", line 367, in QNetworkReply::finished
File "qnetworkreplyhttpimpl.cpp", line 2100, in QNetworkReplyHttpImplPrivate::finished
File "qnetworkreplyhttpimpl.cpp", line 279, in QNetworkReplyHttpImpl::abort
My theory is that the AccountState stored in a property of the job was destroyed.
before the job timed out.
Therefore, the qobject_cast within the qvariant_cast would call the metaObject()
virtual function on a dangling pointer.
Fix it by storing a QPointer instead which will track the deletion.
Jocelyn Turcotte [Fri, 17 Feb 2017 11:57:24 +0000 (12:57 +0100)]
Don't abort propagation job abortions synchronously from finished
This leads to crashes since we changed the connection to the parent
jobs not to be queued anymore.
We don't really need to bubble up the finished state through
parents in that case, and it would also mean that we'd recurse
all the way through leaves as we go up to each parent. So just call
abort directly on the OwncloudPropagator and make sure the abortion
call is posted to the event loop.
Jocelyn Turcotte [Tue, 14 Feb 2017 11:46:44 +0000 (12:46 +0100)]
Reduce the connection data used by PropagateDirectory objects
Avoid using connections to report up the job tree for signals
that we can directly communicate to the OwncloudPropagator.
This slightly reduces the memory usage and avoid passing those calls
through the whole parent chain.
Jocelyn Turcotte [Mon, 13 Feb 2017 14:57:28 +0000 (15:57 +0100)]
Replace WaitForFinishedInParentDirectory with WaitForFinished for directory moves
In preparation for the PropagateDirectory refactoring, simplify things
by removing WaitForFinishedInParentDirectory, which is currently
implemented as a one-level check.
This value is important for directory items, but is however never
used since a directory CSYNC_INSTRUCTION_RENAME item will always be in
PropagateDirectory::_firstJob, which will have to pass through its own
PropagateDirectory job's parallelism() before reaching the parent's
_subJobs optimization.
Since PropagateDirectory::parallelism can only return WaitForFinished
or FullParallelism, that value is lost. So this commit doesn't
change the behavior for directories, and allow file renames to be
scheduled in parallel across directories (which isn't a problem).
It could be possible that _firstJob is marked as finished if
aborted before its parent PropagateDirectory was marked as finished,
allowing a posted scheduleNextJob call to schedule the child job
in-between.
Olivier Goffart [Thu, 23 Feb 2017 13:54:17 +0000 (14:54 +0100)]
Verify that all strings are properly escaped (#5558)
- I checked every occurence of a '%2' and make correct use of the
QString::arg overload that takes several argument instead of chaining
them, because the first argument can contains a '%1'
- I tried to look for every label that they either use plain text or richtext
and escape the user provided strings in there.
Christian Kamm [Wed, 22 Feb 2017 12:04:26 +0000 (13:04 +0100)]
Wizard: Handle PROPFIND redirects #5553
By default, followRedirects is true for all requests, to transparently
handle redirections. In the wizard, we have special redirect-handling
code though and that was being skipped.
Setting the flag to false allows the wizard to be aware of redirects
and to handle them in the correct way. Tested with the server described
in
https://github.com/owncloud/administration/tree/master/redirectServer
There's a second bug here, where followRedirects always converts
redirected requests to the GET verb. That means redirected PROPFINDs
will never have worked. This change un-breaks them for the wizard only.
There should be no case that previously worked that stops working now.
Matthew Setter [Tue, 21 Feb 2017 10:58:15 +0000 (11:58 +0100)]
Re-add the Makefile for controlling the build process
I'm not sure, why the file was removed, it was there in 2013, but it was
removed. This commit adds it back so that the build process can be
automated in a UNIX environment.
Matthew Setter [Tue, 21 Feb 2017 10:49:23 +0000 (11:49 +0100)]
Fix the Sphinx-doc build configuration
I'm not sure what the configuration/setup has been like to date. But as
it stood, it didn't build successfully. Given that, I've created a copy
of doc/conf.py, included in this commit, from the default doc/conf.py.in
and set the appropriate variables as necessary.
NOTE: The build didn't work when the version, release, and latex_logo
values weren't set, either directly or with interpolatable values.
Olivier Goffart [Fri, 17 Feb 2017 08:28:20 +0000 (09:28 +0100)]
Propagator: Fix t8.pl
The test sets OWNCLOUD_MAX_PARALLEL to 1 to disable parallelism.
But since the max amount of parallelism is twice as much, that does not
work.
So change the way we compute the hardMaximumActiveJob: Use the value of
OWNCLOUD_MAX_PARALLEL to maximize this amount and base the maximum amount
of transfer jobs on it instead of the other way.
A result of this change is that, in case of bandwidth limit, we keep the
default of 6 non-transfer jobs in parallel. I believe that's fine since
the short jobs do not really use bandwidth, so we can still keep the same
amount of small jobs.
This reverts commit 1cec2ca13dc35aba6aaf79f42bde9a6dd00143a7
but keeps the reset() -> take() part that is probably the cause
of crashes we've seen in the crash reporter.
Olivier Goffart [Thu, 16 Feb 2017 15:14:55 +0000 (16:14 +0100)]
AccessManager: don't set an invalid network configuration on linux (#5538)
If we call
setConfiguration(QNetworkConfiguration());
This sets an invalid configuration on the QNAM.
But later, when we really go online because interfaces are discovered,
QNetworkAccessManagerPrivate::_q_onlineStateChanged is called (with isOnline=true).
And this will set the state to disconnected because customNetworkConfiguration is
true, and the networkConfiguration state is disabled.
The workaround we to fix another bug on Windows in which the default network
configuration was not behaving properly.
The issue on linux is hard to reproduce and only happen in some condition,
but it was reproduced on smashbox when they run two owncloudcmd at the same time.
Olivier Goffart [Wed, 15 Feb 2017 12:27:41 +0000 (13:27 +0100)]
Folder: Keep files option after aboutToRemoveAllFiles should not clear selective sync list (#5531)
We were removing the wholme journal db when the user wanted to keep all files,
But that would also remove the selective sync lists.
We should only remove the metadata table.