Bug ID 560231: Pipelined requests may result in a RST if the server disconnects

Last Modified: Mar 12, 2019

Bug Tracker

Affected Product:  See more info
BIG-IP LTM(all modules)

Known Affected Versions:
10.2.4, 11.4.1, 11.5.1, 11.5.1 HF1, 11.5.1 HF10, 11.5.1 HF11, 11.5.1 HF2, 11.5.1 HF3, 11.5.1 HF4, 11.5.1 HF5, 11.5.1 HF6, 11.5.1 HF7, 11.5.1 HF8, 11.5.1 HF9, 11.5.2, 11.5.2 HF1, 11.5.3, 11.5.3 HF1, 11.5.3 HF2, 11.5.4, 11.5.4 HF1, 11.5.4 HF2, 11.5.4 HF3, 11.5.4 HF4, 11.5.5, 11.5.6, 11.5.7, 11.5.8, 11.5.9, 11.6.0, 11.6.0 HF1, 11.6.0 HF2, 11.6.0 HF3, 11.6.0 HF4, 11.6.0 HF5, 11.6.0 HF6, 11.6.0 HF7, 11.6.0 HF8, 11.6.1, 11.6.1 HF1, 11.6.1 HF2, 11.6.2, 11.6.2 HF1, 11.6.3, 11.6.3.1, 11.6.3.2, 11.6.3.3, 11.6.3.4, 12.0.0, 12.0.0 HF1, 12.0.0 HF2

Fixed In:
12.1.0, 12.0.0 HF3

Opened: Nov 30, 2015
Severity: 3-Major

Symptoms

If a HTTP client sends multiple pipelined requests before a full response is received, the HTTP filter will buffer them, and send them one at a time to the server. If the server ends via a "Connection: Close" the HTTP filter will ignore this, and continue to send the next buffered request. If the server then sends a FIN packet while that buffered request is in progress, the HTTP filter will send a RST packet to the client.

Impact

The client will receive a RST instead of a FIN packet.

Conditions

Multiple concurrent pipelined HTTP requests, and a back-end server that closes a connection while some requests are still buffered. Oneconnect is not used.

Workaround

There are two work-arounds. 1) Enable one-connect. 2) via iRule. If a "Connection: close" header exists in the HTTP_RESPONSE event, then HTTP::close may be used to cleanly shut the connection down.

Fix Information

The HTTP filter will no longer cause a RST packet to be sent instead of a FIN packet if a back-end server closes a connection while pipelined requests are buffered.

Behavior Change