if (direction == APP_ID_FROM_INITIATOR)
{
- header_start = http_event->get_host(header_length);
+ header_start = http_event->get_authority(header_length);
if (header_length > 0)
hsession->set_field(REQ_HOST_FID, header_start, header_length, change_bits);
length);
}
-const uint8_t* HttpEvent::get_host(int32_t& length)
-{
- // Use Host header when available
- const uint8_t* host_header = get_header(HttpEnums::HTTP_BUFFER_HEADER,
- HttpEnums::HEAD_HOST, length);
- if (length > 0)
- return host_header;
- // Otherwise use authority
- return get_header(HttpEnums::HTTP_BUFFER_URI, HttpEnums::UC_HOST, length);
+const uint8_t* HttpEvent::get_authority(int32_t& length)
+{
+ // Use authority when available
+ HttpMsgRequest* request = http_msg_header->get_request();
+ if (request)
+ {
+ HttpUri* const uri = request->get_http_uri();
+ if (uri)
+ {
+ length = uri->get_authority().length();
+ if (length > 0)
+ return uri->get_authority().start();
+ }
+ }
+ // Otherwise use host header
+ return get_header(HttpEnums::HTTP_BUFFER_HEADER, HttpEnums::HEAD_HOST, length);
}
const uint8_t* HttpEvent::get_location(int32_t& length)
const uint8_t* get_content_type(int32_t &length);
const uint8_t* get_cookie(int32_t &length);
- const uint8_t* get_host(int32_t &length);
+ const uint8_t* get_authority(int32_t &length);
const uint8_t* get_location(int32_t &length);
const uint8_t* get_referer(int32_t &length);
const uint8_t* get_server(int32_t &length);