diff --git a/.github/workflows/ReleaseNotes.md b/.github/workflows/ReleaseNotes.md index 24a926c6..6c670b92 100644 --- a/.github/workflows/ReleaseNotes.md +++ b/.github/workflows/ReleaseNotes.md @@ -1 +1,2 @@ -* [Client] Fixed _PlatformNotSupportedException_ when using Blazor (#1755, thanks to @Nickztar). \ No newline at end of file +* [Client] Fixed _PlatformNotSupportedException_ when using Blazor (#1755, thanks to @Nickztar). +* [Server] Fixed _NullReferenceException_ in retained messages management (#1762, thanks to @logicaloud). diff --git a/Source/MQTTnet.Tests/Server/MqttRetainedMessageManager_Tests.cs b/Source/MQTTnet.Tests/Server/MqttRetainedMessageManager_Tests.cs new file mode 100644 index 00000000..36032ed7 --- /dev/null +++ b/Source/MQTTnet.Tests/Server/MqttRetainedMessageManager_Tests.cs @@ -0,0 +1,25 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MQTTnet.Tests.Server +{ + [TestClass] + public sealed class MqttRetainedMessageManager_Tests + { + [TestMethod] + public async Task MqttRetainedMessageManager_GetUndefinedTopic() + { + var logger = new Mockups.TestLogger(); + var eventContainer = new MQTTnet.Server.MqttServerEventContainer(); + var retainedMessagesManager = new MQTTnet.Server.MqttRetainedMessagesManager(eventContainer, logger); + var task = retainedMessagesManager.GetMessage("undefined"); + Assert.IsNotNull(task, "Task should not be null"); + var result = await task; + Assert.IsNull(result, "Null result expected"); + } + } +} diff --git a/Source/MQTTnet/Server/Internal/MqttRetainedMessagesManager.cs b/Source/MQTTnet/Server/Internal/MqttRetainedMessagesManager.cs index 4dc0b2c0..c23dfeac 100644 --- a/Source/MQTTnet/Server/Internal/MqttRetainedMessagesManager.cs +++ b/Source/MQTTnet/Server/Internal/MqttRetainedMessagesManager.cs @@ -134,9 +134,9 @@ namespace MQTTnet.Server { return Task.FromResult(message); } - - return null; } + + return Task.FromResult(null); } public async Task ClearMessages()