Hi, I’m investigating this bug (https://issues.apache.org/jira/browse/TS-1570 ) and found that the root cause is in HTTPHdr::_fill_target_cache(). It processes port string and stops before the non-digit char. Pasting the code below:
// Check in the URL first, then the HOST field. if (0 != url->host_get(&m_host_length)) { m_target_in_url = true; m_port = url->port_get(); m_port_in_header = 0 != url->port_get_raw(); m_host_mime = NULL; } else if (0 != (m_host_mime = const_cast<HTTPHdr*>(this)->get_host_port_values(0, &m_host_length, &port_ptr, 0))) { if (port_ptr) { m_port = 0; for ( ; is_digit(*port_ptr) ; ++port_ptr ) m_port = m_port * 10 + *port_ptr - '0'; m_port_in_header = (0 != m_port); } m_port = url_canonicalize_port(url->m_url_impl->m_url_type, m_port); } I think a better practice is to let validation check happen as soon as possible in the system and this function is not a good place for validations for the following reasons: 1. This always returns a valid/canonical port number to the caller. Callers in the existing code may depend on this feature. 2. Validation should happen as early as possible to save the resource in ATS 3. There should be a thorough validation including the possibility of integer overflow when converting the port number from a string My current question is that if anybody knows that if there exists such functionality in ATS that I can reuse. If not, where is the best place to add it. Thanks, Cynthia