File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -96,7 +96,11 @@ public class HTTPClient {
9696 }
9797
9898 if request. host == nil {
99- request. host = url. host
99+ if let host = request. host, let port = url. port {
100+ request. host = " \( host) : \( port) "
101+ } else {
102+ request. host = url. host
103+ }
100104 }
101105
102106 if request. accept. isEmpty {
Original file line number Diff line number Diff line change @@ -19,7 +19,23 @@ public struct RequestSerializer {
1919 let newLine : [ UInt8 ] = [ 13 , 10 ]
2020
2121 let method = " \( request. method) " . uppercased ( )
22- try stream. write ( " \( method) \( request. url. absoluteString) HTTP/ \( request. version. major) . \( request. version. minor) " . bytes, deadline: deadline)
22+
23+ // if host is set
24+ // build uri from path & query
25+ // else use absoluteString
26+ //
27+ let requestURI : String
28+ if request. host != nil {
29+ var uri = !request. url. path. isEmpty ? request. url. path : " / "
30+ if let query = request. url. query {
31+ uri += " ? \( query) "
32+ }
33+ requestURI = uri
34+ } else {
35+ requestURI = request. url. absoluteString
36+ }
37+
38+ try stream. write ( " \( method) \( requestURI) HTTP/ \( request. version. major) . \( request. version. minor) " . bytes, deadline: deadline)
2339 try stream. write ( newLine, deadline: deadline)
2440
2541 for (name, value) in request. headers. headers {
Original file line number Diff line number Diff line change @@ -59,6 +59,14 @@ class HTTPClientTests: XCTestCase {
5959 XCTAssertEqual ( response. statusCode, 200 )
6060 }
6161
62+ func testRedirectToOtherDomainWithPort( ) {
63+ let client = try ! HTTPClient ( url: URL ( string: " https://httpbin.org/redirect-to?url=http%3A%2F%2Fexample.com%3A80 " ) !)
64+ try ! client. open ( )
65+ let response = try ! client. request ( )
66+
67+ XCTAssertEqual ( response. statusCode, 200 )
68+ }
69+
6270 func testRedirectMaxRedirectionExceeded( ) {
6371 HTTPClient . maxRedirection = 1
6472 defer {
You can’t perform that action at this time.
0 commit comments