Problem:
The problem was that users using firefox 40 could not authenticate to our service and were stuck in one of the redirects served by tomcat. The problem was tracked to an invalid ajp message sent to tomcat which silently keeled over. Furthermore it was tracked to ngx_http_ajp.c to
if ((sc = sc_for_req_header(&header[i])) != UNKNOWN_METHOD) {
if (ajp_msg_append_uint16(msg, (uint16_t)sc)) {
ngx_log_error(NGX_LOG_ERR, log, 0,
"ajp_marshal_into_msgb: "
"Error appending the header name");
return AJP_EOVERFLOW;
}
}
else {
if (ajp_msg_append_string(msg, &header[i].key)) {
ngx_log_error(NGX_LOG_ERR, log, 0,
"ajp_marshal_into_msgb: "
"Error appending the header name");
return AJP_EOVERFLOW;
}
}
where headers like REMOTE_USER, AUTH_TYPE had the same hashes?! as some of the request_known_headers_t and the keys were not added to the message. That is clearly incorrect. Tomcat refused to decode the message and silently returned 500.
Our setup:
Problem: The problem was that users using firefox 40 could not authenticate to our service and were stuck in one of the redirects served by tomcat. The problem was tracked to an invalid ajp message sent to tomcat which silently keeled over. Furthermore it was tracked to
ngx_http_ajp.c
towhere headers like REMOTE_USER, AUTH_TYPE had the same hashes?! as some of the request_known_headers_t and the keys were not added to the message. That is clearly incorrect. Tomcat refused to decode the message and silently returned 500.