cURL / Mailing Lists / curl-library / Single Mail


[PATCH 0/7] http pipeline fixes

From: Carlo Wood <>
Date: Thu, 6 Nov 2014 03:03:14 +0100


Here are my pipeline fixes.

The CURLMOPT_PIPELINE_POLICY_FUNCTION is needed to get enough flexibility
to keep the number of used connections under control while using the same
multi handle for non-http pipelines too, for which one needs to allow
multiple connections.

The other patches are bug fixes. I'm pretty confident of the correctness
of it all, both by code analysis as well by using it in a heavy duty
production environment with a *LOT* (extra) debugging code, that I have
not included here.

All add DEBUGASSERTs are added to prevent future breakage, not in
the "hope that it will work": I painstakingly went through all code
paths to manually varify that an assert will hold at all times, in
the current code.

Most commit messages are long and detailed (sorry(?) about that), so
I'll leave it at this here.


Carlo Wood (7):
  Comment and debug output fixes.
  pipelining: Fix connection handling under timeouts.
  pipelining: Keep bundle when closing broken pipe.
  pipelining: also keep bundle for a 'retry'.
  Only assign NULL to data->easy_conn directly.
  pipelining: keep used sockets in pipeline active.

 include/curl/multi.h | 49 +++++++++
 lib/bundles.c | 3 +-
 lib/bundles.h | 6 +-
 lib/conncache.c | 23 +++-
 lib/connect.c | 2 +-
 lib/http.c | 11 +-
 lib/multi.c | 258 ++++++++++++++++++++++++++++++++++++++-------
 lib/multihandle.h | 10 +-
 lib/transfer.c | 19 +++-
 lib/url.c | 111 +++++++++++++++----
 lib/urldata.h | 3 +
 packages/OS400/ | 7 ++
 12 files changed, 425 insertions(+), 77 deletions(-)

List admin:
Received on 2014-11-06