mirror of
https://github.com/nextcloud/server.git
synced 2026-06-05 23:06:48 -04:00
Merge pull request #47427 from nextcloud/backport/47415/stable28
[stable28] fix: Trusted server icon recovery without addressbook change
This commit is contained in:
commit
cb61262d5a
4 changed files with 37 additions and 0 deletions
|
|
@ -112,6 +112,7 @@ class GetSharedSecret extends Job {
|
|||
// kill job after 30 days of trying
|
||||
$deadline = $currentTime - $this->maxLifespan;
|
||||
if ($created < $deadline) {
|
||||
$this->logger->warning("The job to get the shared secret job is too old and gets stopped now without retention. Setting server status of '{$target}' to failure.");
|
||||
$this->retainJob = false;
|
||||
$this->trustedServers->setServerStatus($target, TrustedServers::STATUS_FAILURE);
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -116,6 +116,7 @@ class RequestSharedSecret extends Job {
|
|||
// kill job after 30 days of trying
|
||||
$deadline = $currentTime - $this->maxLifespan;
|
||||
if ($created < $deadline) {
|
||||
$this->logger->warning("The job to request the shared secret job is too old and gets stopped now without retention. Setting server status of '{$target}' to failure.");
|
||||
$this->retainJob = false;
|
||||
$this->trustedServers->setServerStatus($target, TrustedServers::STATUS_FAILURE);
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -78,6 +78,10 @@ class SyncFederationAddressBooks {
|
|||
$this->dbHandler->setServerStatus($url, TrustedServers::STATUS_OK, $newToken);
|
||||
} else {
|
||||
$this->logger->debug("Sync Token for $url unchanged from previous sync");
|
||||
// The server status might have been changed to a failure status in previous runs.
|
||||
if ($this->dbHandler->getServerStatus($url) !== TrustedServers::STATUS_OK) {
|
||||
$this->dbHandler->setServerStatus($url, TrustedServers::STATUS_OK);
|
||||
}
|
||||
}
|
||||
} catch (\Exception $ex) {
|
||||
if ($ex->getCode() === Http::STATUS_UNAUTHORIZED) {
|
||||
|
|
|
|||
|
|
@ -111,4 +111,35 @@ class SyncFederationAddressbooksTest extends \Test\TestCase {
|
|||
});
|
||||
$this->assertEquals(2, count($this->callBacks));
|
||||
}
|
||||
|
||||
public function testSuccessfulSyncWithoutChangesAfterFailure() {
|
||||
/** @var DbHandler | MockObject $dbHandler */
|
||||
$dbHandler = $this->getMockBuilder('OCA\Federation\DbHandler')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$dbHandler->method('getAllServer')
|
||||
->willReturn([
|
||||
[
|
||||
'url' => 'https://cloud.drop.box',
|
||||
'url_hash' => 'sha1',
|
||||
'shared_secret' => 'ilovenextcloud',
|
||||
'sync_token' => '0'
|
||||
]
|
||||
]);
|
||||
$dbHandler->method('getServerStatus')->willReturn(\OCA\Federation\TrustedServers::STATUS_FAILURE);
|
||||
$dbHandler->expects($this->once())->method('setServerStatus')->
|
||||
with('https://cloud.drop.box', 1);
|
||||
$syncService = $this->getMockBuilder('OCA\DAV\CardDAV\SyncService')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$syncService->expects($this->once())->method('syncRemoteAddressBook')
|
||||
->willReturn('0');
|
||||
|
||||
/** @var \OCA\DAV\CardDAV\SyncService $syncService */
|
||||
$s = new SyncFederationAddressBooks($dbHandler, $syncService, $this->discoveryService, $this->logger);
|
||||
$s->syncThemAll(function ($url, $ex) {
|
||||
$this->callBacks[] = [$url, $ex];
|
||||
});
|
||||
$this->assertEquals('1', count($this->callBacks));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue