HAProxy - Load balancer
Find a file
Steven Honson 7aec1e6d9a BUG/MEDIUM: server: initialise agent.health in srv_settings_init()
srv_settings_init() sets agent.rise but forgets agent.health, while
srv_settings_cpy() sets both. check.health is fixed up later when the
server's admin state is updated at startup, but nothing does the same
for agent.health.

This used to be harmless because servers were always set up through
srv_settings_cpy(). But since 49a619aca ("MEDIUM: proxy: no longer
allocate the default-server entry by default") the defsrv pointer is
NULL when a proxy has no "default-server" line, and srv_settings_cpy()
then falls back to srv_settings_init(). So a server whose agent-check is
declared entirely on its "server" line ends up with agent.health == 0,
which is below agent.rise.

The wrong value only bites when the server has to come back up. While it
stays up nobody notices agent.health is 0, but as soon as the regular
health check fails and recovers, agent.health is still 0 (below rise) and
check_notify_success() won't bring the server back up. The agent never
sends an explicit "up", which is the only thing that raises agent.health,
so the server stays down for good. Moving the agent settings to a
"default-server" line works around it.

Just initialise agent.health in srv_settings_init() like
srv_settings_cpy() already does.

This should be backported to 3.3 and 3.4.
2026-06-30 17:39:07 +02:00
.github CI: github: remove OpenTracing leftovers 2026-06-26 16:45:38 +02:00
addons MAJOR: ot: remove deprecated OpenTracing support 2026-06-26 11:27:07 +02:00
admin CLEANUP: admin/halog: improve handling of memory allocation errors 2026-05-31 10:30:00 +02:00
dev DEV: patchbot: prepare for new version 3.5-dev 2026-06-03 14:56:22 +02:00
doc MAJOR: ot: remove deprecated OpenTracing support 2026-06-26 11:27:07 +02:00
examples EXAMPLES: lua/acme: fix acme-gandi-livedns.lua configuration example 2026-06-15 13:50:22 +02:00
include MINOR: ssl: export ssl_sock_init_srv() 2026-06-26 17:25:50 +02:00
reg-tests MAJOR: proxy: remove support for "dispatch" and "transparent" proxy keywords 2026-06-26 10:51:16 +02:00
scripts MAJOR: ot: remove deprecated OpenTracing support 2026-06-26 11:27:07 +02:00
src BUG/MEDIUM: server: initialise agent.health in srv_settings_init() 2026-06-30 17:39:07 +02:00
tests TESTS: quic: add unit-tests for QUIC TX part 2025-09-08 14:49:03 +02:00
.gitattributes MINOR: Configure the cpp userdiff driver for *.[ch] in .gitattributes 2021-02-22 18:17:57 +01:00
.gitignore MINOR: tevt/dev: Add term_events tool 2025-01-31 10:41:50 +01:00
.mailmap DOC: update Tim's address in .mailmap 2021-09-16 09:14:14 +02:00
.travis.yml MEDIUM: mworker: remove USE_SYSTEMD requirement for -Ws 2024-11-20 12:07:38 +01:00
BRANCHES CLEANUP: tree-wide: fix typos in user-invisible files 2026-05-13 17:03:48 +02:00
BSDmakefile BUILD: makefile: commit the tiny FreeBSD makefile stub 2023-05-24 17:17:36 +02:00
CHANGELOG [RELEASE] Released version 3.5-dev1 2026-06-25 16:53:19 +02:00
CONTRIBUTING CLEANUP: assorted typo fixes in the code and comments 2025-04-02 11:12:20 +02:00
INSTALL MINOR: version: mention that it's development again 2026-06-03 15:25:53 +02:00
LICENSE LICENSE: add licence exception for OpenSSL 2012-09-07 13:52:26 +02:00
MAINTAINERS MAJOR: spoe: Let the SPOE back into the game 2024-05-22 09:04:38 +02:00
Makefile MAJOR: ot: remove deprecated OpenTracing support 2026-06-26 11:27:07 +02:00
README.md CI: github: replace cirrus by a vmactions/freebsd-vm job 2026-06-03 11:20:31 +02:00
SUBVERS BUILD: use format tags in VERDATE and SUBVERS files 2013-12-10 11:22:49 +01:00
VERDATE [RELEASE] Released version 3.5-dev1 2026-06-25 16:53:19 +02:00
VERSION [RELEASE] Released version 3.5-dev1 2026-06-25 16:53:19 +02:00

HAProxy

AWS-LC Illumos NetBSD CrossCompile FreeBSD VTest

HAProxy logo

HAProxy is a free, very fast and reliable reverse-proxy offering high availability, load balancing, and proxying for TCP and HTTP-based applications.

Installation

The INSTALL file describes how to build HAProxy. A list of packages is also available on the wiki.

Getting help

The discourse and the mailing-list are available for questions or configuration assistance. You can also use the slack or IRC channel. Please don't use the issue tracker for these.

The issue tracker is only for bug reports or feature requests.

Documentation

The HAProxy documentation has been split into a number of different files for ease of use. It is available in text format as well as HTML. The wiki is also meant to replace the old architecture guide.

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:

License

HAProxy is licensed under GPL 2 or any later version, the headers under LGPL 2.1. See the LICENSE file for a more detailed explanation.