From 29d9b2d5bf2f28d3150c93801ea442f297ab52b5 Mon Sep 17 00:00:00 2001 From: Patrick Simpson Date: Wed, 17 Jan 2018 14:35:52 +0200 Subject: [PATCH] [KS-39256] Extra check for invalid group ids in GAB sync. Added Trace logging to GAB to show all JSON contents. --- .../Features/GAB/ChunkIndex.cs | 5 +++++ .../Features/GAB/GABHandler.cs | 22 ++++++++++++++----- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/GAB/ChunkIndex.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/GAB/ChunkIndex.cs index c7cb0bd..83a4570 100644 --- a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/GAB/ChunkIndex.cs +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/GAB/ChunkIndex.cs @@ -48,5 +48,10 @@ namespace Acacia.Features.GAB return null; } } + + override public string ToString() + { + return string.Format("{0}/{1}", chunk, numberOfChunks); + } } } diff --git a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/GAB/GABHandler.cs b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/GAB/GABHandler.cs index 00d7e45..8bd33a4 100644 --- a/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/GAB/GABHandler.cs +++ b/src/AcaciaZPushPlugin/AcaciaZPushPlugin/Features/GAB/GABHandler.cs @@ -465,6 +465,8 @@ namespace Acacia.Features.GAB private void ProcessChunkBody(CompletionTracker completion, IZPushItem item, ChunkIndex index) { + Logger.Instance.Trace(this, "Parsing chunck: {0}: {1}", index, item.Body); + // Process the body foreach (var entry in JSONUtils.Deserialise(item.Body)) { @@ -732,17 +734,25 @@ namespace Acacia.Features.GAB if (Get(value, "memberOf") != null) { ArrayList members = Get(value, "memberOf"); - foreach (string memberOf in members) + foreach (object memberOfObject in members) { - using (IItem groupItem = FindItemById(memberOf)) + string memberOf = memberOfObject as string; + if (memberOf != null) { - Logger.Instance.Debug(this, "Finding group {0} for {1}: {2}", memberOf, id, groupItem?.EntryID); - if (groupItem is IDistributionList) + using (IItem groupItem = FindItemById(memberOf)) { - AddGroupMember((IDistributionList)groupItem, item); - groupItem.Save(); + Logger.Instance.Debug(this, "Finding group {0} for {1}: {2}", memberOf, id, groupItem?.EntryID); + if (groupItem is IDistributionList) + { + AddGroupMember((IDistributionList)groupItem, item); + groupItem.Save(); + } } } + else + { + Logger.Instance.Warning(this, "Invalid group: {0}", memberOfObject); + } } } }