haproxy/src
Remi Tricot-Le Breton 8218aed90e BUG/MINOR: ssl: Fix update of default certificate
The default SSL_CTX used by a specific frontend is the one of the first
ckch instance created for this frontend. If this instance has SNIs, then
the SSL context is linked to the instance through the list of SNIs
contained in it. If the instance does not have any SNIs though, then the
SSL_CTX is only referenced by the bind_conf structure and the instance
itself has no link to it.
When trying to update a certificate used by the default instance through
a cli command, a new version of the default instance was rebuilt but the
default SSL context referenced in the bind_conf structure would not be
changed, resulting in a buggy behavior in which depending on the SNI
used by the client, he could either use the new version of the updated
certificate or the original one.

This patch adds a reference to the default SSL context in the default
ckch instances so that it can be hot swapped during a certificate
update.

This should fix GitHub issue #1143.

It can be backported as far as 2.2.
2021-03-26 13:06:29 +01:00
..
51d.c CLEANUP: config: make the cfg_keyword parsers take a const for the defproxy 2021-03-09 10:09:43 +01:00
acl.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
action.c MINOR: actions: add a function to suggest an action ressembling a given word 2021-03-12 14:13:21 +01:00
activity.c CLEANUP: config: make the cfg_keyword parsers take a const for the defproxy 2021-03-09 10:09:43 +01:00
applet.c MEDIUM: dynbuf: remove last usages of b_alloc_margin() 2021-03-22 16:27:59 +01:00
arg.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
auth.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
backend.c BUG/MEDIUM: release lock on idle conn killing on reached pool high count 2021-03-25 11:55:35 +01:00
base64.c REORG: include: move base64.h, errors.h and hash.h from common to to haproxy/ 2020-06-11 10:18:56 +02:00
cache.c MINOR: cache: use pool_alloc(), not pool_alloc_dirty() 2021-03-22 15:35:53 +01:00
calltrace.c BUILD: trace: include tools.h 2020-09-25 17:54:48 +02:00
cfgparse-global.c BUG/MINOR: cfgparse: use the GLOBAL not LISTEN keywords list for spell checking 2021-03-15 09:15:18 +01:00
cfgparse-listen.c REORG: server: use flags for parse_server 2021-03-18 15:37:05 +01:00
cfgparse-ssl.c BUILD: ssl: guard ecdh functions with SSL_CTX_set_tmp_ecdh macro 2021-03-24 09:52:37 +01:00
cfgparse-tcp.c MINOR: server: prepare parsing for dynamic servers 2021-03-18 15:51:12 +01:00
cfgparse-unix.c MINOR: listener: create a new struct "settings" in bind_conf 2020-09-16 20:13:13 +02:00
cfgparse.c REORG: server: use flags for parse_server 2021-03-18 15:37:05 +01:00
channel.c CLEANUP: channel: fix comment in ci_putblk. 2021-02-13 09:43:17 +01:00
check.c MEDIUM: dynbuf: remove last usages of b_alloc_margin() 2021-03-22 16:27:59 +01:00
chunk.c CLEANUP: include: tree-wide alphabetical sort of include files 2020-06-11 10:18:59 +02:00
cli.c MINOR: cli: implement experimental-mode 2021-03-18 15:37:05 +01:00
compression.c CLEANUP: compression: do not test for buffer before calling b_alloc() 2021-03-22 16:16:22 +01:00
connection.c CLEANUP: config: make the cfg_keyword parsers take a const for the defproxy 2021-03-09 10:09:43 +01:00
da.c CLEANUP: config: make the cfg_keyword parsers take a const for the defproxy 2021-03-09 10:09:43 +01:00
debug.c BUG/MEDIUM: debug/lua: Use internal hlua function to dump the lua traceback 2021-03-24 16:35:23 +01:00
dgram.c REORG: dgram: rename proto_udp to dgram 2020-06-11 10:18:59 +02:00
dict.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
dns.c MEDIUM: task: extend the state field to 32 bits 2021-03-05 08:30:08 +01:00
dynbuf.c MINOR: dynbuf: pass offer_buffers() the number of buffers instead of a threshold 2021-02-20 12:38:18 +01:00
eb32sctree.c REORG: ebtree: move the include files from ebtree to include/import/ 2020-06-11 09:31:11 +02:00
eb32tree.c REORG: ebtree: move the include files from ebtree to include/import/ 2020-06-11 09:31:11 +02:00
eb64tree.c REORG: ebtree: move the include files from ebtree to include/import/ 2020-06-11 09:31:11 +02:00
ebimtree.c CLEANUP: include: tree-wide alphabetical sort of include files 2020-06-11 10:18:59 +02:00
ebistree.c REORG: ebtree: move the include files from ebtree to include/import/ 2020-06-11 09:31:11 +02:00
ebmbtree.c REORG: ebtree: move the include files from ebtree to include/import/ 2020-06-11 09:31:11 +02:00
ebpttree.c REORG: ebtree: move the include files from ebtree to include/import/ 2020-06-11 09:31:11 +02:00
ebsttree.c REORG: ebtree: move the include files from ebtree to include/import/ 2020-06-11 09:31:11 +02:00
ebtree.c BUG/MEDIUM: ebtree: use a byte-per-byte memcmp() to compare memory blocks 2020-06-16 11:30:33 +02:00
ev_epoll.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
ev_evports.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
ev_kqueue.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
ev_poll.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
ev_select.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
extcheck.c CLEANUP: config: make the cfg_keyword parsers take a const for the defproxy 2021-03-09 10:09:43 +01:00
fcgi-app.c MINOR: fcgi-app: use pool_alloc(), not pool_alloc_dirty() 2021-03-22 15:35:53 +01:00
fcgi.c CLEANUP: include: tree-wide alphabetical sort of include files 2020-06-11 10:18:59 +02:00
fd.c BUG/MEDIUM: fd: Take the fd_mig_lock when closing if no DWCAS is available. 2021-03-25 07:34:35 +01:00
filters.c CLEANUP: filters: use pool_zalloc() in flt_stream_add_filter() 2021-03-22 23:17:56 +01:00
fix.c CLEANUP: assorted typo fixes in the code and comments 2020-12-21 11:24:48 +01:00
flt_http_comp.c CLEANUP: compression: do not test for buffer before calling b_alloc() 2021-03-22 16:16:22 +01:00
flt_spoe.c CLEANUP: spoe: use pool_zalloc() instead of pool_alloc+memset 2021-03-22 23:18:26 +01:00
flt_trace.c CLEANUP: Use istadv(const struct ist, const size_t) whenever possible 2021-03-03 05:07:10 +01:00
freq_ctr.c BUG/MEDIUM: freq_ctr/threads: use the global_now_ms variable 2021-03-23 09:03:37 +01:00
frontend.c CLEANUP: frontend: use pool_zalloc() in frontend_accept() 2021-03-22 23:18:54 +01:00
h1.c MEDIUM: h1: add a WebSocket key on handshake if needed 2021-01-28 16:37:14 +01:00
h1_htx.c MINOR: h1: Raise the chunk size limit up to (2^52 - 1) 2021-01-28 16:37:14 +01:00
h2.c CLEANUP: Replace for loop with only a condition by while 2021-03-05 08:28:53 +01:00
haproxy.c REORG: server: add a free server function 2021-03-18 15:37:05 +01:00
hash.c REORG: include: move base64.h, errors.h and hash.h from common to to haproxy/ 2020-06-11 10:18:56 +02:00
hlua.c BUG/MEDIUM: lua: Always init the lua stack before referencing the context 2021-03-24 16:36:36 +01:00
hlua_fcn.c BUG/MINOR: hlua: Don't strip last non-LWS char in hlua_pushstrippedstring() 2021-03-03 19:48:12 +01:00
hpack-dec.c CLEANUP: Use isttest(const struct ist) whenever possible 2021-03-03 05:07:10 +01:00
hpack-enc.c CLEANUP: include: tree-wide alphabetical sort of include files 2020-06-11 10:18:59 +02:00
hpack-huff.c REORG: include: move hpack*.h to haproxy/ and split hpack-tbl 2020-06-11 10:18:57 +02:00
hpack-tbl.c CLEANUP: include: tree-wide alphabetical sort of include files 2020-06-11 10:18:59 +02:00
http.c MINOR: http: Add HTTP 501-not-implemented error message 2021-01-21 15:21:12 +01:00
http_acl.c CLEANUP: acl: don't reference the generic pattern deletion function anymore 2020-11-05 19:27:09 +01:00
http_act.c BUG/MEDIUM: stick-tables: fix ref counter in table entry using multiple http tracksc. 2021-03-11 14:14:44 +01:00
http_ana.c CLEANUP: l7-retries: do not test the buffer before calling b_alloc() 2021-03-22 16:17:37 +01:00
http_conv.c MINOR: http-conv: Don't check if argument list is set in sample converters 2021-01-29 13:26:02 +01:00
http_fetch.c BUG/MINOR: http_fetch: make hdr_ip() reject trailing characters 2021-03-25 15:30:06 +01:00
http_htx.c CLEANUP: config: make the cfg_keyword parsers take a const for the defproxy 2021-03-09 10:09:43 +01:00
http_rules.c MINOR: http-rules: suggest approaching action names on mismatch 2021-03-12 14:13:21 +01:00
htx.c CLEANUP: Use istadv(const struct ist, const size_t) whenever possible 2021-03-03 05:07:10 +01:00
lb_chash.c MINOR: lb/chash: use a read lock in chash_get_server_hash() 2020-10-17 20:15:49 +02:00
lb_fas.c OPTIM: lb-first: do not take the server lock on take_conn/drop_conn 2021-02-18 10:06:45 +01:00
lb_fwlc.c OPTIM: lb-leastconn: do not unlink the server if it did not change 2021-02-18 10:06:45 +01:00
lb_fwrr.c MINOR: backend: replace the lbprm lock with an rwlock 2020-10-17 18:51:41 +02:00
lb_map.c MINOR: lb/map: use seek lock and read locks where appropriate 2020-10-17 19:04:27 +02:00
listener.c MINOR: cfgparse/bind: suggest correct spelling for unknown bind keywords 2021-03-12 14:13:21 +01:00
log.c MINOR: cfgparse/bind: suggest correct spelling for unknown bind keywords 2021-03-12 14:13:21 +01:00
lru.c MINOR: lru: new function to delete <nb> least recently used keys 2016-01-11 07:31:35 +01:00
mailers.c CLEANUP: mailers: use pool_zalloc() in enqueue_one_email_alert() 2021-03-22 23:19:13 +01:00
map.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
mqtt.c CLEANUP: assorted typo fixes in the code and comments 2020-12-21 11:24:48 +01:00
mux_fcgi.c MEDIUM: dynbuf: remove last usages of b_alloc_margin() 2021-03-22 16:27:59 +01:00
mux_h1.c BUG/MEDIUM: mux-h1: make h1_shutw_conn() idempotent 2021-03-26 09:29:38 +01:00
mux_h2.c MEDIUM: dynbuf: remove last usages of b_alloc_margin() 2021-03-22 16:27:59 +01:00
mux_pt.c CLEANUP: task: make sure tasklet handlers always indicate their statuses 2021-03-13 11:30:19 +01:00
mworker-prog.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
mworker.c CLEANUP: config: make the cfg_keyword parsers take a const for the defproxy 2021-03-09 10:09:43 +01:00
namespace.c REORG: include: move the error reporting functions to from log.h to errors.h 2020-06-11 10:18:59 +02:00
pattern.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
payload.c MINOR: config: Deprecate and ignore tune.chksize global option 2020-11-27 10:30:23 +01:00
peers.c MEDIUM: task: extend the state field to 32 bits 2021-03-05 08:30:08 +01:00
pipe.c CLEANUP: include: tree-wide alphabetical sort of include files 2020-06-11 10:18:59 +02:00
pool.c CLEANUP: mark defproxy as const on parse tune.fail-alloc 2021-03-22 11:50:31 +01:00
proto_quic.c MEDIUM: connections: Introduce a new XPRT method, start(). 2021-03-19 15:33:04 +01:00
proto_sockpair.c MEDIUM: connections: Introduce a new XPRT method, start(). 2021-03-19 15:33:04 +01:00
proto_tcp.c MEDIUM: connections: Introduce a new XPRT method, start(). 2021-03-19 15:33:04 +01:00
proto_udp.c MINOR: udp: export udp_suspend_receiver() and udp_resume_receiver() 2020-12-08 18:10:18 +01:00
proto_uxdg.c BUG/MINOR: protocol: add missing support of dgram unix socket. 2021-03-18 18:30:29 +01:00
proto_uxst.c MEDIUM: connections: Introduce a new XPRT method, start(). 2021-03-19 15:33:04 +01:00
protocol.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
proxy.c MINOR: cfgparse/proxy: also support spelling fixes on options 2021-03-15 11:14:57 +01:00
qpack-tbl.c CLEANUP: qpack: Wrong comment about the draft for QPACK static header table. 2021-01-04 12:31:28 +01:00
queue.c MINOR: lb/api: let callers of take_conn/drop_conn tell if they have the lock 2021-02-18 10:06:45 +01:00
quic_cc.c MINOR: quic: Import C source code files for QUIC protocol. 2020-12-23 11:57:26 +01:00
quic_cc_newreno.c MINOR: quic: Add traces to congestion avoidance NewReno callback. 2020-12-23 11:57:26 +01:00
quic_frame.c CLEANUP: assorted typo fixes in the code and comments 2021-01-06 16:26:50 +01:00
quic_sock.c MEDIUM: quic: Fix build. 2021-03-19 20:09:22 +01:00
quic_tls.c MINOR: quic: Update the initial salt to that of draft-29. 2020-12-23 11:57:26 +01:00
raw_sock.c MINOR: raw_sock: Add a close method. 2021-03-19 15:33:04 +01:00
regex.c OPTIM: regex: PCRE2 use JIT match when JIT optimisation occured. 2020-08-14 07:53:40 +02:00
resolvers.c CLEANUP: resolvers: use pool_zalloc() in resolv_link_resolution() 2021-03-22 23:19:28 +01:00
ring.c MINOR: ring: adds new ring_init function. 2021-02-13 09:43:17 +01:00
sample.c BUG/MINOR: sample: secure convs that accept base64 string and var name as args 2021-02-23 17:21:46 +01:00
server.c CLEANUP: assorted typo fixes in the code and comments 2021-03-20 09:28:58 +01:00
server_state.c BUG/MINOR: server-state: use the argument, not the global state 2021-03-12 14:13:07 +01:00
session.c MEDIUM: connections: Introduce a new XPRT method, start(). 2021-03-19 15:33:04 +01:00
sha1.c BUILD: use inttypes.h instead of stdint.h 2019-04-01 07:44:56 +02:00
shctx.c REORG: include: split global.h into haproxy/global{,-t}.h 2020-06-11 10:18:58 +02:00
signal.c REORG: include: move the error reporting functions to from log.h to errors.h 2020-06-11 10:18:59 +02:00
sink.c REORG: server: use flags for parse_server 2021-03-18 15:37:05 +01:00
sock.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
sock_inet.c MINOR: protocol: add a ->set_port() helper to address families 2020-12-04 15:08:00 +01:00
sock_unix.c CLEANUP: protocol: remove the now unused <handler> field of proto_fam->bind() 2020-10-15 21:47:56 +02:00
ssl_ckch.c CLEANUP: tree-wide: replace free(x);x=NULL with ha_free(&x) 2021-02-26 21:21:09 +01:00
ssl_crtlist.c BUG/MINOR: ssl: Prevent disk access when using "add ssl crt-list" 2021-03-23 19:29:46 +01:00
ssl_sample.c MINOR: ssl-sample: Don't check if argument list is set in sample fetches 2021-01-29 13:26:24 +01:00
ssl_sock.c BUG/MINOR: ssl: Fix update of default certificate 2021-03-26 13:06:29 +01:00
ssl_utils.c CLEANUP: ssl: ssl_sock_crt2der semicolon and spaces 2020-08-07 15:38:40 +02:00
stats.c MINOR: stats: export function to allocate extra proxy counters 2021-03-18 15:52:07 +01:00
stick_table.c MEDIUM: task: extend the state field to 32 bits 2021-03-05 08:30:08 +01:00
stream.c MEDIUM: dynbuf: remove last usages of b_alloc_margin() 2021-03-22 16:27:59 +01:00
stream_interface.c CLEANUP: task: make sure tasklet handlers always indicate their statuses 2021-03-13 11:30:19 +01:00
task.c MINOR: task: give the scheduler a bit more flexibility in the runqueue size 2021-03-10 11:15:34 +01:00
tcp_act.c BUG/MEDIUM: session: NULL dereference possible when accessing the listener 2021-03-09 12:51:42 +01:00
tcp_rules.c CLEANUP: tcp-rules: Fix a typo in error messages about expect-netscaler-cip 2021-03-19 15:41:16 +01:00
tcp_sample.c MINOR: listener: prefer to retrieve the socket's settings via the receiver 2020-09-16 22:08:07 +02:00
tcpcheck.c CLEANUP: tcpcheck: use pool_zalloc() instead of pool_alloc+memset 2021-03-22 23:20:03 +01:00
thread.c BUG/MEDIUM: thread: Fix a deadlock if an isolated thread is marked as harmless 2021-03-25 14:31:50 +01:00
time.c MINOR: time: also provide a global, monotonic global_now_ms timer 2021-03-23 09:01:37 +01:00
tools.c MINOR: tools: make url2ipv4 return the exact number of bytes parsed 2021-03-25 15:18:47 +01:00
trace.c CLEANUP: Use isttest(const struct ist) whenever possible 2021-03-03 05:07:10 +01:00
uri_auth.c CLEANUP: Compare the return value of XXXcmp() functions with zero 2021-01-04 10:09:02 +01:00
vars.c CLEANUP: vars: make the error message clearer on missing arguments for set-var 2021-03-12 14:13:20 +01:00
version.c BUILD: Fix build by including haproxy/global.h 2020-06-16 23:36:04 +02:00
wdt.c CLEANUP: config: Return ERR_NONE from config callbacks instead of 0 2020-11-13 16:26:10 +01:00
wurfl.c CLEANUP: config: make the cfg_keyword parsers take a const for the defproxy 2021-03-09 10:09:43 +01:00
xprt_handshake.c MEDIUM: connections: Implement a start() method for xprt_handshake. 2021-03-19 15:33:04 +01:00
xprt_quic.c CLEANUP: quic: use pool_zalloc() instead of pool_alloc+memset 2021-03-22 23:20:21 +01:00