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);
+ }
}
}
}