diff --git a/framework/Core/lib/Horde/Core/ActiveSync/Driver.php b/framework/Core/lib/Horde/Core/ActiveSync/Driver.php index 40df2bb13da..141b194a2d7 100644 --- a/framework/Core/lib/Horde/Core/ActiveSync/Driver.php +++ b/framework/Core/lib/Horde/Core/ActiveSync/Driver.php @@ -1114,7 +1114,8 @@ public function getServerChanges( break; case Horde_ActiveSync::CLASS_EMAIL: - if (empty($this->_imap)) { + if (empty($this->_imap) || + $folder->serverid() == 'OUTBOX') { $this->_endBuffer(); return array(); } @@ -1814,6 +1815,12 @@ public function changeMessage($folderid, $id, Horde_ActiveSync_Message_Base $mes $this->_pid, $folderid, $id)); + + // Short circuit OUTBOX modifications to work around broken clients. + if ($folderid == 'OUTBOX') { + return false; + } + ob_start(); $folder_split = $this->_parseFolderId($folderid); @@ -3088,6 +3095,9 @@ protected function _getMailFolders() ++$level; } + // Fake Outbox for broken clients. + $folders[] = $this->_buildDummyFolder(self::SPECIAL_OUTBOX); + $this->_mailFolders = $folders; } }