HAProxy - Load balancer
Find a file
Baptiste Assmann 4c52e4b560 BUG/MINOR: action: do-resolve does not yield on requests with body
@davidmogar reported a github issue (#227) about problems with
do-resolve action when the request contains a body.
The variable was never populated in such case, despite tcpdump shows a
valid DNS response coming back.

The do-resolve action is a task in HAProxy and so it's waken by the
scheduler each time the scheduler think such task may have some work to
do.
When a simple HTTP request is sent, then the task is called, it sends
the DNS request, then the scheduler will wake up the task again later
once the DNS response is there.
Now, when the client send a PUT or a POST request (or any other type)
with a BODY, then the do-resolve action if first waken up once the
headers are processed. It sends the DNS request. Then, when the bytes
for the body are processed by HAProxy AND the DNS response has not yet
been received, then the action simply terminates and cleans up all the
data associated to this resolution...

This patch detect such behavior and if the action is now waken up while
a DNS resolution is in RUNNING state, then the action will tell the
scheduler to wake it up again later.

Backport status: 2.0 and above
2019-10-01 15:50:50 +02:00
.github/ISSUE_TEMPLATE DOC: Add 'Question.md' issue template, discouraging asking questions 2019-08-02 19:11:41 +02:00
contrib BUG/MINOR: contrib/prometheus-exporter: Return the time averages in seconds 2019-09-27 08:49:49 +02:00
doc DOC: replace utf-8 quotes by ascii ones 2019-09-30 13:57:10 +02:00
ebtree CLEANUP: fix typos in comments in ebtree 2018-11-18 22:23:15 +01:00
examples CLEANUP: removed obsolete examples an move a few to better places 2019-06-15 21:25:06 +02:00
include BUG/MEDIUM: fd: HUP is an error only when write is active 2019-10-01 11:52:08 +02:00
reg-tests REGTESTS: checks: make 4be_1srv_health_checks more reliable 2019-08-01 09:53:36 +02:00
scripts BUILD: CI: install golang-1.13 when building BoringSSL 2019-09-17 13:52:39 +02:00
src BUG/MINOR: action: do-resolve does not yield on requests with body 2019-10-01 15:50:50 +02:00
tests TESTS: Add a stress-test for mt_lists. 2019-09-23 18:16:08 +02:00
.cirrus.yml BUILD: CI: skip reg-tests/connection/proxy_protocol_random_fail.vtc on CentOS 6 2019-09-08 12:10:32 +02:00
.gitignore DOC: create a BRANCHES file to explain the life cycle 2019-06-15 22:00:14 +02:00
.travis.yml BUILD: travis-ci: add PCRE2, SLZ build 2019-09-23 19:08:39 +02:00
BRANCHES DOC: create a BRANCHES file to explain the life cycle 2019-06-15 22:00:14 +02:00
CHANGELOG [RELEASE] Released version 2.1-dev1 2019-07-16 19:15:28 +02:00
CONTRIBUTING DOC: improve the wording in CONTRIBUTING about how to document a bug fix 2019-07-26 15:46:21 +02:00
INSTALL MINOR: build: add linux-glibc-legacy build TARGET 2019-09-01 17:28:10 +02:00
LICENSE LICENSE: add licence exception for OpenSSL 2012-09-07 13:52:26 +02:00
MAINTAINERS DOC: wurfl: added point of contact in MAINTAINERS file 2019-04-23 11:00:23 +02:00
Makefile BUILD: makefile: work around yet another GCC fantasy (-Wstring-plus-int) 2019-09-24 09:43:34 +02:00
README DOC: create a BRANCHES file to explain the life cycle 2019-06-15 22:00:14 +02:00
ROADMAP DOC: update the outdated ROADMAP file 2019-06-15 21:59:54 +02:00
SUBVERS BUILD: use format tags in VERDATE and SUBVERS files 2013-12-10 11:22:49 +01:00
VERDATE [RELEASE] Released version 2.1-dev1 2019-07-16 19:15:28 +02:00
VERSION [RELEASE] Released version 2.1-dev1 2019-07-16 19:15:28 +02:00

The HAProxy documentation has been split into a number of different files for
ease of use.

Please refer to the following files depending on what you're looking for :

  - INSTALL for instructions on how to build and install HAProxy
  - BRANCHES to understand the project's life cycle and what version to use
  - LICENSE for the project's license
  - CONTRIBUTING for the process to follow to submit contributions

The more detailed documentation is located into the doc/ directory :

  - doc/intro.txt for a quick introduction on HAProxy
  - doc/configuration.txt for the configuration's reference manual
  - doc/lua.txt for the Lua's reference manual
  - doc/SPOE.txt for how to use the SPOE engine
  - doc/network-namespaces.txt for how to use network namespaces under Linux
  - doc/management.txt for the management guide
  - doc/regression-testing.txt for how to use the regression testing suite
  - doc/peers.txt for the peers protocol reference
  - doc/coding-style.txt for how to adopt HAProxy's coding style
  - doc/internals for developer-specific documentation (not all up to date)