Start of change

Pipelining

Pipelining involves a client sending multiple HTTP requests to a server without waiting for a response. Responses must then be returned from the server in the same sequence that the requests were received.

It is the requester's responsibility to ensure that the requests are idempotent. Idempotency means that the same result is always obtained when all, or part, of the series of requests is repeated. This ensures that if there is an error in connecting with the server, the client may retry the series of requests, even though it does not know if the server has implemented all, some, or none of the requests.

The HTTP/1.1 specification (RFC 2616) defines the rules about idempotency for HTTP requests. See The HTTP protocol for more information about the HTTP specifications. Briefly, most request methods are idempotent if they are used on their own, because the same result is obtained each time the method is used. (The exception is the POST method, because it changes the resource on the server.) However, when a sequence of requests is issued during pipelining, the sequence might be non-idempotent, particularly if resources are being changed.

If you plan on pipelining requests, check that the request sequence could be terminated at any point, and re-started from the beginning, without causing a logical error. If this is not the case, make the requests individually and await confirmation after each request.

End of change