Filters that Alter Content-Length

Filters that can alter the length of an incoming request body or outgoing
response body must take special steps to ensure interoperability with other
filters and SAFs.

Filters that process incoming data are referred to as input filters.
If an input filter can alter the length of the incoming request body (for
example, if a filter decompresses incoming data) and there is a Content-Length header in the rq->headers pblock, the filter's insert filter method should remove the Content-Length header
and replace it with a Transfer-encoding:identity header
as follows:

Because some SAFs expect a Content-Length header
when a request body is present, before calling the first Service SAF
the server will insert all relevant filters, read the entire request body,
and compute the length of the request body after it has been passed through
all input filters. However, by default, the server will read at most 8192
bytes of request body data. If the request body exceeds 8192 bytes after being
passed through the relevant input filters, the request will be cancelled.
For more information, see the description of ChunkedRequestBufferSize in
the "Syntax and Use of magnus.conf" chapter in the Sun Java System Web Server 6.1 SP11 Administrator’s Configuration File Reference.

Filters that process outgoing data are referred to as output filters.
If an output filter can alter the length of the outgoing response body (for
example, if the filter compresses outgoing data), the filter's insert filter
method should remove the Content-Length header from rq->srvhdrs as follows: