@@ -48,32 +48,42 @@ protected AmqpString()
48
48
_stringBytes = ReadOnlyMemory < byte > . Empty ;
49
49
}
50
50
51
- public AmqpString ( string value , ushort maxLen , Encoding encoding )
52
- : this ( value , maxLen , encoding , null )
51
+ public AmqpString ( string value , ushort maxLen , Encoding encoding ,
52
+ bool strictValidation = false )
53
+ : this ( value , maxLen , encoding , null , strictValidation )
53
54
{
54
55
}
55
56
56
- public AmqpString ( string value , ushort maxLen , Encoding encoding , string validatorRegex )
57
+ public AmqpString ( string value , ushort maxLen , Encoding encoding , string validatorRegex ,
58
+ bool strictValidation = false )
57
59
{
58
- if ( value . Length > maxLen )
60
+ /*
61
+ * Note:
62
+ * RabbitMQ does hardly any validation for names, only stripping off CR/LF
63
+ * characters if present. There are no other checks.
64
+ */
65
+ if ( strictValidation )
59
66
{
60
- throw new ArgumentOutOfRangeException ( nameof ( value ) ) ;
61
- }
62
-
63
- if ( false == string . IsNullOrWhiteSpace ( validatorRegex ) )
64
- {
65
- var re = new Regex ( validatorRegex ) ;
66
- if ( false == re . IsMatch ( value ) )
67
+ if ( value . Length > maxLen )
67
68
{
68
69
throw new ArgumentOutOfRangeException ( nameof ( value ) ) ;
69
70
}
70
- }
71
71
72
- if ( encoding == Encoding . ASCII )
73
- {
74
- if ( false == isAscii ( value ) )
72
+ if ( false == string . IsNullOrWhiteSpace ( validatorRegex ) )
75
73
{
76
- throw new ArgumentOutOfRangeException ( nameof ( value ) ) ;
74
+ var re = new Regex ( validatorRegex ) ;
75
+ if ( false == re . IsMatch ( value ) )
76
+ {
77
+ throw new ArgumentOutOfRangeException ( nameof ( value ) ) ;
78
+ }
79
+ }
80
+
81
+ if ( encoding == Encoding . ASCII )
82
+ {
83
+ if ( false == isAscii ( value ) )
84
+ {
85
+ throw new ArgumentOutOfRangeException ( nameof ( value ) ) ;
86
+ }
77
87
}
78
88
}
79
89
@@ -204,7 +214,12 @@ private ExchangeName() : base()
204
214
}
205
215
206
216
public ExchangeName ( string exchangeName )
207
- : base ( exchangeName , 127 , Encoding . ASCII , "^[a-zA-Z0-9-_.:]*$" )
217
+ : this ( exchangeName , false )
218
+ {
219
+ }
220
+
221
+ public ExchangeName ( string exchangeName , bool strictValidation )
222
+ : base ( exchangeName , 127 , Encoding . ASCII , "^[a-zA-Z0-9-_.:]*$" , strictValidation )
208
223
{
209
224
}
210
225
@@ -231,7 +246,12 @@ private QueueName() : base()
231
246
}
232
247
233
248
public QueueName ( string queueName )
234
- : base ( queueName , 127 , Encoding . ASCII , "^[a-zA-Z0-9-_.:]*$" )
249
+ : this ( queueName , false )
250
+ {
251
+ }
252
+
253
+ public QueueName ( string queueName , bool strictValidation )
254
+ : base ( queueName , 127 , Encoding . ASCII , "^[a-zA-Z0-9-_.:]*$" , strictValidation )
235
255
{
236
256
}
237
257
@@ -263,7 +283,12 @@ private RoutingKey() : base()
263
283
}
264
284
265
285
public RoutingKey ( string routingKey )
266
- : base ( routingKey , 256 , Encoding . ASCII )
286
+ : this ( routingKey , false )
287
+ {
288
+ }
289
+
290
+ public RoutingKey ( string routingKey , bool strictValidation )
291
+ : base ( routingKey , 256 , Encoding . ASCII , strictValidation )
267
292
{
268
293
}
269
294
@@ -289,7 +314,12 @@ private ConsumerTag() : base()
289
314
}
290
315
291
316
public ConsumerTag ( string consumerTag )
292
- : base ( consumerTag , 256 , Encoding . ASCII )
317
+ : this ( consumerTag , false )
318
+ {
319
+ }
320
+
321
+ public ConsumerTag ( string consumerTag , bool strictValidation )
322
+ : base ( consumerTag , 256 , Encoding . ASCII , strictValidation )
293
323
{
294
324
}
295
325
0 commit comments