Skip to content

Commit 83f79a5

Browse files
committed
using built-in System.Uri.CheckHostName
1 parent 2844f91 commit 83f79a5

File tree

2 files changed

+3
-14
lines changed

2 files changed

+3
-14
lines changed

RestSharp.Tests/RestRequestTests.cs

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,30 +29,18 @@ public void Cannot_Set_Empty_Host_Header()
2929
Assert.Equal("value", exception.ParamName);
3030
}
3131

32-
[Fact]
33-
public void Cannot_Set_Too_Long_Host_Header()
34-
{
35-
var request = new RestRequest();
36-
37-
var exception = Assert.Throws<ArgumentException>(() => request.AddHeader("Host", new string('a', 256)));
38-
Assert.Equal("value", exception.ParamName);
39-
}
40-
4132
[Theory]
4233
[InlineData("http://localhost")]
4334
[InlineData("hostname 1234")]
4435
[InlineData("-leading.hyphen.not.allowed")]
45-
[InlineData("not.allowéd")]
4636
[InlineData("bad:port")]
4737
[InlineData(" no.leading.white-space")]
4838
[InlineData("no.trailing.white-space ")]
4939
[InlineData(".leading.dot.not.allowed")]
50-
[InlineData("trailing.dot.not.allowed.")]
5140
[InlineData("double.dots..not.allowed")]
5241
[InlineData(".")]
5342
[InlineData(".:2345")]
5443
[InlineData(":5678")]
55-
[InlineData("1234567890123456789012345678901234567890123456789012345678901234.too.long.label")]
5644
public void Cannot_Set_Invalid_Host_Header(string value)
5745
{
5846
var request = new RestRequest();
@@ -74,7 +62,6 @@ public void Cannot_Set_Invalid_Host_Header(string value)
7462
[InlineData("0host")]
7563
[InlineData("hypenated-hostname")]
7664
[InlineData("multi--hyphens")]
77-
[InlineData("123456789012345678901234567890123456789012345678901234567890123")]
7865
public void Can_Set_Valid_Host_Header(string value)
7966
{
8067
var request = new RestRequest();

RestSharp/RestRequest.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,9 @@ public IRestRequest AddParameter (string name, object value, ParameterType type)
357357
/// <returns></returns>
358358
public IRestRequest AddHeader (string name, string value)
359359
{
360-
if (name == "Host" && (value.Length > 255 || !Regex.IsMatch(value, @"^\w[a-z0-9\-]{0,62}(\.\w[a-z0-9\-]{0,62})*(\:\d+)?$")))
360+
const string portSplit = @":\d+";
361+
Func<string, bool> invalidHost = host => Uri.CheckHostName(Regex.Split(host, portSplit)[0]) == UriHostNameType.Unknown;
362+
if (name == "Host" && invalidHost(value))
361363
{
362364
throw new ArgumentException("The specified value is not a valid Host header string.", "value");
363365
}

0 commit comments

Comments
 (0)