Page MenuHomePhorge

D2074.1774853780.diff
No OneTemporary

Authored By
Unknown
Size
3 KB
Referenced Files
None
Subscribers
None

D2074.1774853780.diff

diff --git a/lib/ext/Syncroton/Command/Ping.php b/lib/ext/Syncroton/Command/Ping.php
--- a/lib/ext/Syncroton/Command/Ping.php
+++ b/lib/ext/Syncroton/Command/Ping.php
@@ -82,8 +82,9 @@
} catch (Syncroton_Exception_NotFound $senf) {
if ($this->_logger instanceof Zend_Log)
$this->_logger->debug(__METHOD__ . '::' . __LINE__ . " " . $senf->getMessage());
- $status = self::STATUS_FOLDER_NOT_FOUND;
- break;
+ // Outlook refuses to removed some folders, and keeps requesting them.
+ // Without this we end up in an endless loop: https://bifrost.kolabsystems.com/T399575
+ continue;
}
}
$this->_device->pingfolder = serialize(array_keys($folders));
diff --git a/lib/ext/Syncroton/Command/Sync.php b/lib/ext/Syncroton/Command/Sync.php
--- a/lib/ext/Syncroton/Command/Sync.php
+++ b/lib/ext/Syncroton/Command/Sync.php
@@ -470,7 +470,10 @@
foreach($this->_collections as $collectionData) {
// continue immediately if folder does not exist
if (! ($collectionData->folder instanceof Syncroton_Model_IFolder)) {
- break 2;
+ // Ignore the not found folder.
+ // Outlook refuses to remove some folders, and keeps requesting them.
+ // Without this we end up in an endless loop: https://bifrost.kolabsystems.com/T399575
+ continue;
// countinue immediately if syncstate is invalid
} elseif (! ($collectionData->syncState instanceof Syncroton_Model_ISyncState)) {
@@ -545,23 +548,21 @@
} while (Syncroton_Server::validateSession() && time() - $intervalStart < $this->_heartbeatInterval - (Syncroton_Registry::getPingTimeout() + 10));
}
- // First check for folders hierarchy changes
- foreach ($this->_collections as $collectionData) {
- if (! ($collectionData->folder instanceof Syncroton_Model_IFolder)) {
- // Without this Outlook will next do a FolderSync with the same syncKey,
- // and thus not detect any changes.
- $this->_syncStateBackend->resetState($this->_device, 'FolderSync');
+
+
+ foreach($this->_collections as $collectionData) {
+ if (! ($collectionData->folder instanceof Syncroton_Model_IFolder)) {
+ // Ignore the not found folder.
+ // Outlook refuses to remove some folders, and keeps requesting them.
+ // Without this we end up in an endless loop: https://bifrost.kolabsystems.com/T399575
if ($this->_logger instanceof Zend_Log)
- $this->_logger->warn(__METHOD__ . '::' . __LINE__ . " Detected a folder hierarchy change on {$collectionData->collectionId}.");
+ $this->_logger->warn(__METHOD__ . '::' . __LINE__ . " Detected an unknown folder, skipping {$collectionData->collectionId}.");
- $sync->appendChild($this->_outputDom->createElementNS('uri:AirSync', 'Status', self::STATUS_FOLDER_HIERARCHY_HAS_CHANGED));
- return $this->_outputDom;
+ continue;
}
- }
- foreach($this->_collections as $collectionData) {
$collectionChanges = 0;
/**

File Metadata

Mime Type
text/plain
Expires
Mon, Mar 30, 6:56 AM (1 w, 22 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18784818
Default Alt Text
D2074.1774853780.diff (3 KB)

Event Timeline