💻 Desktop sync client for Nextcloud
Find a file
Olivier Goffart 868d4c781a HTTP creds: Fix GUI blocking for 5 seconds when entering wrong password
The Qt HTTP thread calls authenticationRequired (indirectly) using a
BlockingQueuedConnection. So when we call invalidateToken from slot
connected to this signal and end up calling QNAM::clearAccessCache which
waits on the thread for 5 seconds

Backtraces:

Qt HTTP thread:
 #0  0x00007ffff20c707f in pthread_cond_wait@@GLIBC_2.3.2 ()
 #1  0x00007ffff43f0c0b in QWaitConditionPrivate::wait
 #2  QWaitCondition::wait
 #3  0x00007ffff43ea06b in QSemaphore::acquire
 #4  0x00007ffff45dcf6f in QMetaObject::activate
[...]
 #9  0x00007ffff45dd607 in QMetaObject::activate
 #10 0x00007ffff4edbaf7 in QHttpNetworkReply::authenticationRequired
 #11 0x00007ffff4e0b2b4 in QHttpNetworkConnectionPrivate::handleAuthenticateChallenge
 #12 0x00007ffff4e10753 in QHttpNetworkConnectionChannel::handleStatus
 #13 0x00007ffff4e11cc9 in QHttpNetworkConnectionChannel::allDone
 #14 0x00007ffff4e14605 in QHttpProtocolHandler::_q_receiveReply

Main Thread:
 #0  0x00007ffff20c7428 in pthread_cond_timedwait@@GLIBC_2.3.2 ()
 #1  0x00007ffff43f0b56 in QWaitConditionPrivate::wait_relative (time=5000, this=0x136c580)
 #2  QWaitConditionPrivate::wait (time=5000, this=0x136c580)
 #3  QWaitCondition::wait (this=this@entry=0x136c788, mutex=mutex@entry=0x136c760, time=time@entry=5000)
 #4  0x00007ffff43efa6e in QThread::wait (this=<optimized out>, time=time@entry=5000)
 #5  0x00007ffff4e1edd3 in QNetworkAccessManagerPrivate::clearCache
 #6  0x00007ffff7b6fb03 in OCC::HttpCredentials::invalidateToken()
 #7  0x000000000057adb4 in OCC::AccountState::slotInvalidCredentials()
 #8  0x000000000057ac76 in OCC::AccountState::slotConnectionValidatorResult(OCC::ConnectionValidator::Status, QStringList const&) ()
 #9  0x00000000005ab45c in OCC::AccountState::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)
 #10 0x00007ffff45dcd30 in QMetaObject::activate
 #11 0x00007ffff7b78671 in OCC::ConnectionValidator::connectionResult(OCC::ConnectionValidator::Status, QStringList) ()
 #12 0x00007ffff7ae2514 in OCC::ConnectionValidator::reportResult(OCC::ConnectionValidator::Status) ()
 #13 0x00007ffff7ae39b7 in OCC::ConnectionValidator::slotAuthFailed(QNetworkReply*) ()
 #14 0x00007ffff7b784a9 in OCC::ConnectionValidator::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) ()
 #15 0x00007ffff45dcd30 in QMetaObject::activate
 #16 0x00007ffff7b766dc in OCC::AbstractNetworkJob::networkError(QNetworkReply*)
 #17 0x00007ffff7af9f6e in OCC::AbstractNetworkJob::slotFinished()
 #18 0x00007ffff7b7654d in OCC::AbstractNetworkJob::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) ()
 #20 0x00007ffff45dd607 in QMetaObject::activate
 #21 0x00007ffff4edd143 in QNetworkReply::finished
 #22 0x00007ffff4e3fec7 in QNetworkReplyHttpImplPrivate::finished
 #23 0x00007ffff4e41818 in QNetworkReplyHttpImpl::close
 #24 0x00007ffff7b7047b in OCC::HttpCredentials::slotAuthentication(QNetworkReply*, QAuthenticator*) ()
 #25 0x00007ffff7b79092 in OCC::HttpCredentials::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) ()
 #27 0x00007ffff45dd607 in QMetaObject::activate
 #28 0x00007ffff4e1d6fb in QNetworkAccessManager::authenticationRequired
 #29 0x00007ffff4e1ea07 in QNetworkAccessManagerPrivate::authenticationRequired
 #30 0x00007ffff4e3c784 in QNetworkReplyHttpImplPrivate::httpAuthenticationRequired

Another case of Main Thread:
 #5  0x00007ffff4e1edd3 in QNetworkAccessManagerPrivate::clearCache
 #6  0x00007ffff7b6fb03 in OCC::HttpCredentials::invalidateToken()
 #7  0x000000000057b1e4 in OCC::AccountState::slotInvalidCredentials() ()
 #8  0x00000000005abb8a in OCC::AccountState::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) ()
 #9  0x00007ffff45dcd30 in QMetaObject::activate
 #10 0x00007ffff7b76ed5 in OCC::Account::invalidCredentials() ()
 #11 0x00007ffff7ad55f5 in OCC::Account::handleInvalidCredentials()
 #12 0x00007ffff7afa69a in OCC::AbstractNetworkJob::slotFinished()
 #13 0x00007ffff7b7654d in OCC::AbstractNetworkJob::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) ()
 #15 0x00007ffff45dd607 in QMetaObject::activate
 #16 0x00007ffff4edd143 in QNetworkReply::finished
 #17 0x00007ffff4e3fec7 in QNetworkReplyHttpImplPrivate::finished
 #18 0x00007ffff4e41818 in QNetworkReplyHttpImpl::close
 #19 0x00007ffff7b7047b in OCC::HttpCredentials::slotAuthentication(QNetworkReply*, QAuthenticator*) ()
 #20 0x00007ffff7b79092 in OCC::HttpCredentials::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) ()
 #22 0x00007ffff45dd607 in QMetaObject::activate
 #23 0x00007ffff4e1d6fb in QNetworkAccessManager::authenticationRequired
2016-01-07 14:46:49 +01:00
admin OS X: Don't install legacy Finder plugin on >= 10.10 #3587 2016-01-05 17:43:48 +01:00
binary@8b72648a93 shell_integration on Windows: Avoid too many RETRIEVE_FILE_STATUS following UPDATE_VIEW #3122 2015-05-06 16:48:34 +02:00
cmake Remove bearer plugins 2016-01-04 11:54:11 +01:00
csync Propagator: Deal with files becoming directories #4302 2016-01-05 10:26:41 +01:00
doc Document all owncloudcmd switches in man page/doc 2016-01-06 22:33:39 +01:00
resources SharedDialog: Fix the delete icon on windows and mac (#3737) 2015-11-17 10:40:45 +01:00
shell_integration Dolphin integration: use system icons for labels in KDE 2016-01-04 12:57:24 +01:00
src HTTP creds: Fix GUI blocking for 5 seconds when entering wrong password 2016-01-07 14:46:49 +01:00
test SyncJournalTest: Use valid time for the tests. 2015-11-25 22:16:29 +01:00
theme Run optipng on existing non-mono state icons 2015-09-11 13:45:57 +02:00
translations [tx-robot] updated from transifex 2016-01-07 02:19:23 -05:00
.gitattributes git: fix entry in .gitattributes to not export binary dir. 2014-09-22 11:24:24 +02:00
.gitignore Import the dolphin plugin 2014-11-24 15:06:08 +01:00
.gitmodules OS X: Fix alignment of "Copy" button in protocol #4207 2016-01-04 16:16:15 +01:00
.tag Export repo revision indicator 2012-10-12 14:44:21 +02:00
.travis.yml Cleanup travis build file 2015-06-12 13:22:08 +02:00
binary.rej Bump to 1.9 2015-05-06 17:01:05 +02:00
ChangeLog Editorial changes to ChangeLog 2015-12-03 10:06:06 +01:00
client.qrc SharedDialog: Fix the delete icon on windows and mac (#3737) 2015-11-17 10:40:45 +01:00
CMakeLists.txt Remove legacy propagator and neon 2015-10-20 17:57:43 +02:00
config.h.in Remove legacy propagator and neon 2015-10-20 17:57:43 +02:00
CONTRIBUTING.md Minor build etc typos 2015-09-10 13:20:11 +05:45
COPYING Correct COPYING file from FSF website, rpmlint found an old address 2011-11-22 22:45:14 +01:00
COPYING.documentation Add doc cmake targets (HTML, PDF, QtHelp, CHM, man) 2012-11-25 00:38:47 +01:00
CPackOptions.cmake.in Mirall -> (Desktop) Client 2014-12-08 17:54:32 +01:00
issue_template.md Use 1.8 troubleshooting link 2015-03-30 17:32:19 +02:00
mirall.desktop.in Desktop file: Add X-GNOME-Autostart-Delay #3686 #1739 2015-08-31 12:01:00 +02:00
OWNCLOUD.cmake Minor build etc typos 2015-09-10 13:20:11 +05:45
OwnCloudCPack.cmake CPack: Use APPLICATION_SHORTNAME rather than APPLICATION_NAME 2015-07-16 14:38:59 +02:00
README.md Add coverity badge 2015-11-04 21:06:48 +01:00
sync-exclude.lst sync excludes: Add .directory files to be ignored 2015-11-11 17:27:01 +01:00
theme.qrc Add changes theme.qrc 2015-09-11 15:31:56 +02:00
VERSION.cmake Move version to 2.1.1 git. 2015-12-22 11:18:20 +01:00

ownCloud Desktop Client

Job State
client-build-matrix Build Status
client-test-matrix-linux-no-build Build Status
coverity_scan Build Status

Introduction

The ownCloud Desktop Client is a tool to synchronize files from ownCloud Server with your computer.

Download

Binary packages

Source code

The ownCloud Desktop Client is developed in Git. Since Git makes it easy to fork and improve the source code and to adapt it to your need, many copies can be found on the Internet, in particular on GitHub. However, the authoritative repository maintained by the developers is located at https://github.com/owncloud/client.

Building the source code

Building the Client in the ownCloud Desktop Client manual.

Maintainers and Contributors

The maintainers of this repository are:

ownCloud Desktop Client is developed by the ownCloud community and receives patches from a variety of authors.

Reporting issues and contributing

If you find any bugs or have any suggestion for improvement, please file an issue at https://github.com/owncloud/client/issues. Do not contact the authors directly by mail, as this increases the chance of your report being lost.

If you created a patch, please submit a Pull Request. For non-trivial patches, we need you to sign the Contributor Agreement before we can accept your patch.

If you want to contact us, e.g. before starting a more complex feature, you can join us at #owncloud-client-dev.

License

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.