From 6aa9ccab6a3d6ddac0d33ec752626c3b0b9844f6 Mon Sep 17 00:00:00 2001 From: Aleksandr Date: Fri, 31 Jul 2026 12:34:52 +0300 Subject: [PATCH] fix proxy-state parser --- .../Adapters/AdapterResponseSender.cs | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) 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)