Skip to content

Commit 96329bc

Browse files
committed
Validate Max length of queue name
1 parent b3d7e55 commit 96329bc

File tree

5 files changed

+42
-5
lines changed

5 files changed

+42
-5
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
using System;
2+
using System.Runtime.Serialization;
3+
4+
namespace Grumpy.MessageQueue.Msmq.Exceptions
5+
{
6+
/// <inheritdoc />
7+
[Serializable]
8+
public sealed class QueueNameException : Exception
9+
{
10+
/// <inheritdoc />
11+
private QueueNameException(SerializationInfo info, StreamingContext context) : base(info, context) { }
12+
13+
/// <inheritdoc />
14+
public QueueNameException(string name, int maxLength) : base("Queue Name too long")
15+
{
16+
Data.Add(nameof(name), name);
17+
Data.Add(nameof(maxLength), maxLength);
18+
}
19+
}
20+
}

Grumpy.MessageQueue.Msmq/Grumpy.MessageQueue.Msmq.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
<Compile Include="Properties\AssemblyInfo.cs" />
5858
<Compile Include="Queue.cs" />
5959
<Compile Include="QueueFactory.cs" />
60+
<Compile Include="Exceptions\QueueNameException.cs" />
6061
<Compile Include="RemoteQueue.cs" />
6162
<Compile Include="TransactionalMessage.cs" />
6263
<Compile Include="Exceptions\UnableToGetQueueException.cs" />
@@ -69,7 +70,7 @@
6970
<Version>1.2.3</Version>
7071
</PackageReference>
7172
<PackageReference Include="Grumpy.Logging">
72-
<Version>0.9.2</Version>
73+
<Version>0.9.3</Version>
7374
</PackageReference>
7475
<PackageReference Include="Newtonsoft.Json">
7576
<Version>10.0.3</Version>

Grumpy.MessageQueue.Msmq/MessageQueueManager.cs

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,29 @@ public class MessageQueueManager : IMessageQueueManager
1717
{
1818
private readonly ILogger _logger;
1919
private readonly object _lock;
20+
private readonly string _serverName;
2021

2122
/// <inheritdoc />
2223
public MessageQueueManager(ILogger logger)
2324
{
2425
_logger = logger;
2526
_lock = new object();
27+
_serverName = Environment.GetEnvironmentVariable("COMPUTERNAME");
2628
}
2729

2830
private const string PrivatePrefix = @"private$\";
29-
private static string Path(string serverName, string name, bool privateQueue) => (Locale(serverName) ? "." : "FormatName:DIRECT=OS:" + serverName.ToLower()) + @"\" + Prefix(privateQueue) + name.ToLower();
31+
private string Path(string serverName, string name, bool privateQueue) => (Locale(serverName) ? "" : $"FormatName:DIRECT=OS:") + Name(name, privateQueue);
32+
33+
private string Name(string name, bool privateQueue)
34+
{
35+
var res = _serverName.ToLower() + @"\" + Prefix(privateQueue) + name.ToLower();
36+
37+
if (res.Length > 124)
38+
throw new QueueNameException(res, 124);
39+
40+
return res;
41+
}
42+
3043
private static string Prefix(bool privateQueue) => privateQueue ? PrivatePrefix.ToLower() : "";
3144

3245
/// <inheritdoc />
@@ -208,6 +221,9 @@ private bool Exists(string serverName, string name, bool privateQueue)
208221
}
209222
}
210223

211-
private static bool Locale(string serverName) => serverName.NullOrWhiteSpace() || serverName.In(".", Environment.GetEnvironmentVariable("COMPUTERNAME"));
224+
private bool Locale(string serverName)
225+
{
226+
return serverName.NullOrWhiteSpace() ||serverName.In(".", _serverName);
227+
}
212228
}
213229
}

Grumpy.MessageQueue.NuGet/Grumpy.MessageQueue.NuGet.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
</ItemGroup>
5959
<ItemGroup>
6060
<PackageReference Include="Grumpy.Logging">
61-
<Version>0.9.2</Version>
61+
<Version>0.9.3</Version>
6262
</PackageReference>
6363
</ItemGroup>
6464
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

Grumpy.MessageQueue/Grumpy.MessageQueue.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
<Version>1.2.7</Version>
5959
</PackageReference>
6060
<PackageReference Include="Grumpy.Logging">
61-
<Version>0.9.2</Version>
61+
<Version>0.9.3</Version>
6262
</PackageReference>
6363
</ItemGroup>
6464
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

0 commit comments

Comments
 (0)