From a1f06f3204133005b26b8896c95804c2f43cf629 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=BA=E8=83=BD=E5=A4=A7=E7=9F=B3=E5=A4=B4?= Date: Tue, 5 Nov 2024 00:36:28 +0800 Subject: [PATCH] =?UTF-8?q?Local=E6=A8=A1=E5=BC=8F=E5=8F=AA=E6=98=AF?= =?UTF-8?q?=E4=BB=A3=E7=90=86=E7=BB=99=E5=90=8E=E7=AB=AF=E7=9A=84=E5=81=A5?= =?UTF-8?q?=E5=BA=B7=E6=A3=80=E6=B5=8B=E5=8C=85=EF=BC=8C=E4=B8=8D=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- NewLife.MQTT/ProxyProtocol/ProxyCodec.cs | 5 ++++- XUnitTestClient/ProxyProtocolTests.cs | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/NewLife.MQTT/ProxyProtocol/ProxyCodec.cs b/NewLife.MQTT/ProxyProtocol/ProxyCodec.cs index b0f46a4..37c8645 100644 --- a/NewLife.MQTT/ProxyProtocol/ProxyCodec.cs +++ b/NewLife.MQTT/ProxyProtocol/ProxyCodec.cs @@ -42,7 +42,10 @@ public class ProxyCodec : Handler var rs = msg.Read(data); if (rs > 0) { - if (context is IExtend ext) + // Local模式只是代理给后端的健康检测包,不需要处理 + if (msg.Command != 0x01) return msg; + + if (context is IExtend ext && msg.Command == 0x01 && msg.Client != null) { ext["Proxy"] = msg; diff --git a/XUnitTestClient/ProxyProtocolTests.cs b/XUnitTestClient/ProxyProtocolTests.cs index 8a9cb61..1bc8ffe 100644 --- a/XUnitTestClient/ProxyProtocolTests.cs +++ b/XUnitTestClient/ProxyProtocolTests.cs @@ -45,6 +45,22 @@ public void TestPPv2() Assert.Equal("tcp://192.168.1.24:1883", msg.Proxy + ""); } + [Fact] + public void TestPPv2Local() + { + var str = "0D0A0D0A000D0A515549540A20000000"; + var buf = str.ToHex(); + var msg = new ProxyMessageV2(); + var rs = msg.Read(buf); + + Assert.True(rs > 0); + Assert.Equal(16, rs); + Assert.Equal(0x02, msg.Version); + Assert.Equal(0x00, msg.Command); + Assert.Null(msg.Client); + Assert.Null(msg.Proxy); + } + [Fact] public async Task TestProxyProtocol() {