Commit 200c9f74 authored by Sebastian Kummer's avatar Sebastian Kummer

Merge pull request #130 in ZP/z-push from...

Merge pull request #130 in ZP/z-push from feature/ZP-793-ping-modifies-syncparameters-too-agressively to develop

* commit 'f8d7d6a3':
  ZP-793 Cache requested folderid so only the SyncCollections get changed that really had a change in flags.
parents 1680807d f8d7d6a3
...@@ -103,9 +103,8 @@ class Ping extends RequestProcessor { ...@@ -103,9 +103,8 @@ class Ping extends RequestProcessor {
} }
if(($el = self::$decoder->getElementStartTag(SYNC_PING_FOLDERS)) && $el[EN_FLAGS] & EN_FLAGS_CONTENT) { if(($el = self::$decoder->getElementStartTag(SYNC_PING_FOLDERS)) && $el[EN_FLAGS] & EN_FLAGS_CONTENT) {
// remove PingableFlag from all collections // cache requested (pingable) folderids
foreach ($sc as $folderid => $spa) $pingable = array();
$spa->DelPingableFlag();
while(self::$decoder->getElementStartTag(SYNC_PING_FOLDER)) { while(self::$decoder->getElementStartTag(SYNC_PING_FOLDER)) {
WBXMLDecoder::ResetInWhile("pingFolder"); WBXMLDecoder::ResetInWhile("pingFolder");
...@@ -143,13 +142,24 @@ class Ping extends RequestProcessor { ...@@ -143,13 +142,24 @@ class Ping extends RequestProcessor {
$foundchanges = true; $foundchanges = true;
} }
else if ($class == $spa->GetContentClass()) { else if ($class == $spa->GetContentClass()) {
$spa->SetPingableFlag(true); $pingable[] = $folderid;
ZLog::Write(LOGLEVEL_DEBUG, sprintf("HandlePing(): using saved sync state for '%s' id '%s'", $spa->GetContentClass(), $folderid)); ZLog::Write(LOGLEVEL_DEBUG, sprintf("HandlePing(): using saved sync state for '%s' id '%s'", $spa->GetContentClass(), $folderid));
} }
} }
if(!self::$decoder->getElementEndTag()) if(!self::$decoder->getElementEndTag())
return false; return false;
// update pingable flags
foreach ($sc as $folderid => $spa) {
// if the folderid is in $pingable, we should ping it, else remove the flag
if (in_array($folderid, $pingable)) {
$spa->SetPingableFlag(true);
}
else {
$spa->DelPingableFlag();
}
}
} }
if(!self::$decoder->getElementEndTag()) if(!self::$decoder->getElementEndTag())
return false; return false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment