@@ -12,7 +12,7 @@ const char* HttpClient::kTransferEncodingChunked = HTTP_HEADER_TRANSFER_ENCODING
12
12
13
13
HttpClient::HttpClient (Client& aClient, const char * aServerName, uint16_t aServerPort)
14
14
: iClient(&aClient), iServerName(aServerName), iServerAddress(), iServerPort(aServerPort),
15
- iConnectionClose(true ), iSendDefaultRequestHeaders(true )
15
+ iConnectionClose(true ), iSendDefaultRequestHeaders(true ), iUseServerAddressForHostHeader( false )
16
16
{
17
17
resetState ();
18
18
}
@@ -24,7 +24,7 @@ HttpClient::HttpClient(Client& aClient, const String& aServerName, uint16_t aSer
24
24
25
25
HttpClient::HttpClient (Client& aClient, const IPAddress& aServerAddress, uint16_t aServerPort)
26
26
: iClient(&aClient), iServerName(NULL ), iServerAddress(aServerAddress), iServerPort(aServerPort),
27
- iConnectionClose(true ), iSendDefaultRequestHeaders(true )
27
+ iConnectionClose(true ), iSendDefaultRequestHeaders(true ), iUseServerAddressForHostHeader( false )
28
28
{
29
29
resetState ();
30
30
}
@@ -58,6 +58,11 @@ void HttpClient::noDefaultRequestHeaders()
58
58
iSendDefaultRequestHeaders = false ;
59
59
}
60
60
61
+ void HttpClient::useServerAddressForHostHeader ()
62
+ {
63
+ iUseServerAddressForHostHeader = true ;
64
+ }
65
+
61
66
void HttpClient::beginRequest ()
62
67
{
63
68
iState = eRequestStarted;
@@ -157,17 +162,7 @@ int HttpClient::sendInitialHeaders(const char* aURLPath, const char* aHttpMethod
157
162
if (iSendDefaultRequestHeaders)
158
163
{
159
164
// The host header, if required
160
- if (iServerName)
161
- {
162
- iClient->print (" Host: " );
163
- iClient->print (iServerName);
164
- if (iServerPort != kHttpPort )
165
- {
166
- iClient->print (" :" );
167
- iClient->print (iServerPort);
168
- }
169
- iClient->println ();
170
- }
165
+ sendHostHeader ();
171
166
// And user-agent string
172
167
sendHeader (HTTP_HEADER_USER_AGENT, kUserAgent );
173
168
}
@@ -184,6 +179,29 @@ int HttpClient::sendInitialHeaders(const char* aURLPath, const char* aHttpMethod
184
179
return HTTP_SUCCESS;
185
180
}
186
181
182
+ void HttpClient::sendHostHeader ()
183
+ {
184
+ if (iServerName || iUseServerAddressForHostHeader) {
185
+ iClient->print (HTTP_HEADER_HOST);
186
+ iClient->print (" : " );
187
+
188
+ if (iServerName)
189
+ {
190
+ iClient->print (iServerName);
191
+ } else if (iUseServerAddressForHostHeader) {
192
+ iClient->print (iServerAddress);
193
+ }
194
+
195
+ if (iServerPort != kHttpPort )
196
+ {
197
+ iClient->print (" :" );
198
+ iClient->print (iServerPort);
199
+ }
200
+ iClient->println ();
201
+ }
202
+ }
203
+
204
+
187
205
void HttpClient::sendHeader (const char * aHeader)
188
206
{
189
207
iClient->println (aHeader);
0 commit comments