Bug ID 696755: HTTP/2 may truncate a response body when served from cache

Last Modified: Sep 13, 2023

Affected Product(s):
BIG-IP LTM(all modules)

Known Affected Versions:
12.1.3, 12.1.3.1, 12.1.3.2, 12.1.3.3, 12.1.3.4, 12.1.3.5, 12.1.3.6, 12.1.3.7, 12.1.4, 12.1.4.1, 12.1.5, 12.1.5.1, 12.1.5.2, 12.1.5.3, 12.1.6, 13.0.0, 13.0.0 HF1, 13.0.0 HF2, 13.0.0 HF3, 13.0.1, 13.1.0, 13.1.0.1, 13.1.0.2, 13.1.0.3, 13.1.0.4, 13.1.0.5, 13.1.0.6, 13.1.0.7, 14.0.1.1, 14.1.0.5, 15.0.0, 15.0.1, 15.0.1.1, 15.0.1.2, 15.0.1.3, 15.0.1.4, 15.1.0, 15.1.0.1, 15.1.0.2, 15.1.0.3, 15.1.0.4, 15.1.0.5, 15.1.1, 15.1.2, 15.1.2.1, 16.0.0, 16.0.0.1, 16.0.1, 16.0.1.1

Fixed In:
16.1.0, 16.0.1.2, 15.1.3, 14.1.0.6, 13.1.0.8

Opened: Nov 29, 2017

Severity: 3-Major

Symptoms

BIG-IP systems provide a client-side HTTP/2 Gateway protocol implementation in conjunction with HTTP 1.x on a server side. A response can be cached on the BIG-IP system with a web acceleration profile. Sometimes a response served from cache is prematurely marked with END_STREAM flag, causing the client to ignore the rest of the response body.

Impact

Some clients' browsers do not retry a resource, causing incorrect rendering of an HTML page.

Conditions

BIG-IP system has a virtual server for which HTTP/2 and Web Acceleration profiles are configured.

Workaround

Adding the following iRule causes the body to be displayed: when HTTP_RESPONSE_RELEASE { set con_len [string trim [HTTP::header value Content-Length]] HTTP::header remove Content-Length HTTP::header insert Content-Length "$con_len" }

Fix Information

With provided fix, HTTP/2 end users no longer experience the problem of incorrect page rendering due to this issue.

Behavior Change

Guides & references

K10134038: F5 Bug Tracker Filter Names and Tips