diff --git a/src/Multifactor.Radius.Adapter.v2.Infrastructure/Features/PacketHandler/Adapters/AdapterResponseSender.cs b/src/Multifactor.Radius.Adapter.v2.Infrastructure/Features/PacketHandler/Adapters/AdapterResponseSender.cs index b9addb6..ecc404a 100644 --- a/src/Multifactor.Radius.Adapter.v2.Infrastructure/Features/PacketHandler/Adapters/AdapterResponseSender.cs +++ b/src/Multifactor.Radius.Adapter.v2.Infrastructure/Features/PacketHandler/Adapters/AdapterResponseSender.cs @@ -176,14 +176,27 @@ private static void CopyAttributes(RadiusPacket? source, RadiusPacket? target) private void AddProxyStateAttribute(RadiusPacket source, RadiusPacket target) { - if (!source.Attributes.TryGetValue(ProxyStateAttribute, out var proxyStateAttribute)) return; - if (target.Attributes.ContainsKey(ProxyStateAttribute)) return; - var value = proxyStateAttribute.Values.FirstOrDefault(); - if (value != null) + if (!source.Attributes.TryGetValue(ProxyStateAttribute, out var proxyStateAttribute)) + { + + _logger.LogDebug("Source Attribute '{attrname:l}' is empty", ProxyStateAttribute); + return; + } + if (target.Attributes.ContainsKey(ProxyStateAttribute)) + { + _logger.LogDebug("Target already contains attribute '{attrname:l}'", ProxyStateAttribute); + return; + } + var value = proxyStateAttribute.Values; + if (value is { Count: > 0 }) { _logger.LogDebug("Added/replaced attribute '{attrname:l}' to reply", ProxyStateAttribute); target.AddAttributeValue(ProxyStateAttribute, value); } + else + { + _logger.LogDebug("Attribute '{attrname:l}' is empty", ProxyStateAttribute); + } } private static void AddMessageAuthenticatorIfMissing(RadiusPacket packet)