どこを直すべきか

Tomcat6(6.0.10)におけるHttp1.1系ProcessorクラスのHTTPレスポンスを返す際の前処理では、以下のようにHTTP1.1で且つKeepAliveが指定されている場合は問答無用に"Transfer-Encoding"を"Chunked"に設定している。

if (entityBody && http11 && keepAlive) {
    outputBuffer.addActiveFilter
        (outputFilters[Constants.CHUNKED_FILTER]);
    contentDelimitation = true;
    headers.addValue(Constants.TRANSFERENCODING).setString(Constants.CHUNKED);
} else {
    outputBuffer.addActiveFilter
        (outputFilters[Constants.IDENTITY_FILTER]);
}

"Transfer-Encoding : Chunked"はそれをサポートしていないクライアント(最近では滅多に無いが、プロプライエタリな、ソケットから起こしたクライアントだと結構あったりする)は正常に処理できない。

対処としては

1. Tomcat6に独自でパッチを充てる(特定の条件下でChunkedを無効にする)
2. クライアント側にChunkedのサポートを追加する

当然2.案が真っ当だと思うだろうが、担当者によって意見が分かれるのがここだ。