haproxy/src
Willy Tarreau 8560328211 BUG/MEDIUM: http: make http-request set-header compute the string before removal
The way http-request/response set-header works is stupid. For a naive
reuse of the del-header code, it removes all occurrences of the header
to be set before computing the new format string. This makes it almost
unusable because it is not possible to append values to an existing
header without first copying them to a dummy header, performing the
copy back and removing the dummy header.

Instead, let's share the same code as add-header and perform the optional
removal after the string is computed. That way it becomes possible to
write things like :

   http-request set-header X-Forwarded-For %[hdr(X-Forwarded-For)],%[src]

Note that this change is not expected to have any undesirable impact on
existing configs since if they rely on the bogus behaviour, they don't
work as they always retrieve an empty string.

This fix must be backported to 1.5 to stop the spreadth of ugly configs.
2015-01-21 20:45:00 +01:00
..
acl.c BUG/MEDIUM: pattern: don't load more than once a pattern list. 2014-11-24 15:40:16 +01:00
appsession.c BUILD: definitely silence some stupid GCC warnings 2013-12-13 15:21:36 +01:00
arg.c BUG/MINOR: args: add missing entry for ARGT_MAP in arg_type_names 2015-01-21 16:06:53 +01:00
auth.c BUG/MEDIUM: auth: fix segfault with http-auth and a configuration with an unknown encryption algorithm 2014-08-29 21:06:31 +02:00
backend.c MEDIUM: backend: add the crc32 hash algorithm for load balancing 2015-01-20 19:48:14 +01:00
base64.c [MINOR] add encode/decode function for 30-bit integers from/to base64 2010-10-30 19:04:33 +02:00
buffer.c MINOR: config: implement global setting tune.buffers.limit 2014-12-24 23:47:33 +01:00
cfgparse.c MEDIUM: backend: add the crc32 hash algorithm for load balancing 2015-01-20 19:48:14 +01:00
channel.c MINOR: channel: rename buffer_max_len() to channel_recv_limit() 2015-01-14 20:21:43 +01:00
checks.c MINOR: checks: update dynamic environment variables in external checks 2014-12-28 01:22:56 +01:00
chunk.c BUG/MINOR: chunk: Fix function chunk_strcmp and chunk_strcasecmp match a substring. 2014-05-09 19:16:13 +02:00
compression.c MEDIUM: buffer: use b_alloc() to allocate and initialize a buffer 2014-12-24 23:47:32 +01:00
connection.c MAJOR: namespace: add Linux network namespace support 2014-11-21 07:51:57 +01:00
cttproxy.c CLEANUP: cttproxy: remove a warning on undeclared close() 2012-10-05 22:18:07 +02:00
dumpstats.c CLEANUP: session: remove session_from_task() 2014-12-28 12:19:57 +01:00
ev_epoll.c CLEANUP: epoll: epoll_events should be allocated according to global.tune.maxpollevents 2014-12-17 17:04:53 +01:00
ev_kqueue.c MAJOR: polling: centralize calls to I/O callbacks 2014-11-21 20:37:32 +01:00
ev_poll.c MAJOR: polling: centralize calls to I/O callbacks 2014-11-21 20:37:32 +01:00
ev_select.c MAJOR: polling: centralize calls to I/O callbacks 2014-11-21 20:37:32 +01:00
fd.c MAJOR: polling: centralize calls to I/O callbacks 2014-11-21 20:37:32 +01:00
freq_ctr.c BUG/MINOR: time: frequency counters are not totally accurate 2012-12-29 21:50:07 +01:00
frontend.c BUG/MAJOR: frontend: initialize capture pointers earlier 2014-11-18 18:53:43 +01:00
haproxy-systemd-wrapper.c BUG/MEDIUM: remove debugging code from systemd-wrapper 2014-09-24 12:59:25 +02:00
haproxy.c MAJOR: init: automatically set maxconn and/or maxsslconn when possible 2015-01-15 21:45:22 +01:00
hash.c MINOR: hash: add new function hash_crc32 2015-01-20 19:48:05 +01:00
hdr_idx.c OPTIM/MINOR: move the hdr_idx pools out of the proxy struct 2011-10-24 18:15:04 +02:00
i386-linux-vsys.c MEDIUM: listener: add support for linux's accept4() syscall 2012-10-08 20:11:03 +02:00
lb_chash.c REORG/MEDIUM: server: split server state and flags in two different variables 2014-05-22 11:27:00 +02:00
lb_fas.c REORG/MEDIUM: server: split server state and flags in two different variables 2014-05-22 11:27:00 +02:00
lb_fwlc.c REORG/MEDIUM: server: split server state and flags in two different variables 2014-05-22 11:27:00 +02:00
lb_fwrr.c REORG/MEDIUM: server: split server state and flags in two different variables 2014-05-22 11:27:00 +02:00
lb_map.c MINOR: server: make use of srv_is_usable() instead of checking eweight 2014-05-23 14:29:11 +02:00
listener.c MEDIUM: listener: support rebinding during resume() 2014-07-08 01:13:35 +02:00
log.c BUG/MAJOR: log: don't try to emit a log if no logger is set 2015-01-15 16:29:53 +01:00
map.c BUG/MEDIUM: patterns: last fix was still not enough 2014-04-28 14:19:17 +02:00
memory.c MEDIUM: memory: improve pool_refill_alloc() to pass a refill count 2014-12-24 23:47:31 +01:00
namespace.c MAJOR: namespace: add Linux network namespace support 2014-11-21 07:51:57 +01:00
pattern.c BUG/MEDIUM: patterns: previous fix was incomplete 2014-11-26 13:17:03 +01:00
payload.c MINOR: channel: rename buffer_max_len() to channel_recv_limit() 2015-01-14 20:21:43 +01:00
peers.c CLEANUP: session: remove session_from_task() 2014-12-28 12:19:57 +01:00
pipe.c BUILD/MINOR: silent a build warning in src/pipe.c (fcntl) 2011-10-24 17:09:22 +02:00
proto_http.c BUG/MEDIUM: http: make http-request set-header compute the string before removal 2015-01-21 20:45:00 +01:00
proto_tcp.c BUG/MAJOR: namespaces: conn->target is not necessarily a server 2014-12-24 13:47:55 +01:00
proto_uxst.c BUG/MEDIUM: unix: completely unbind abstract sockets during a pause() 2014-07-08 01:13:35 +02:00
protocol.c REORG: split "protocols" files into protocol and listener 2012-09-15 22:29:32 +02:00
proxy.c BUG/MEDIUM: http: adjust close mode when switching to backend 2014-09-30 18:44:22 +02:00
queue.c MINOR: server: make use of srv_is_usable() instead of checking eweight 2014-05-23 14:29:11 +02:00
raw_sock.c BUG/MINOR: raw_sock: also consider ENOTCONN in addition to EAGAIN for recv() 2014-03-04 07:27:18 +01:00
rbtree.c [MINOR] imported the rbtree function from Linux kernel 2007-01-07 02:12:57 +01:00
regex.c MEDIUM: regex: Use pcre_study always when PCRE is used, regardless of JIT 2014-11-18 13:26:18 +01:00
sample.c MINOR: samples: provide a "crc32" converter 2015-01-20 19:48:08 +01:00
server.c MAJOR: namespace: add Linux network namespace support 2014-11-21 07:51:57 +01:00
session.c MAJOR: session: only wake up as many sessions as available buffers permit 2014-12-24 23:47:33 +01:00
sessionhash.c [PATCH] appsessions: cleanup DEBUG_HASH and initialize request_counter 2008-08-13 23:43:26 +02:00
shctx.c MINOR: stats: add counters for SSL cache lookups and misses 2014-05-28 16:53:04 +02:00
signal.c BUG/MEDIUM: signal: signal handler does not properly check for signal bounds 2013-01-24 16:19:19 +01:00
ssl_sock.c MINOR: global: report information about the cost of SSL connections 2015-01-15 21:34:39 +01:00
standard.c MINOR: tools: add new round_2dig() function to round integers 2015-01-15 19:02:27 +01:00
stick_table.c BUG/MAJOR: tcp: fix a possible busy spinning loop in content track-sc* 2014-07-30 08:56:35 +02:00
stream_interface.c MINOR: channel: rename bi_erase() to channel_truncate() 2015-01-14 20:32:59 +01:00
task.c [OPTIM] task: don't scan the run queue if we know it's empty 2011-09-10 20:08:49 +02:00
time.c BUG/MINOR: time: frequency counters are not totally accurate 2012-12-29 21:50:07 +01:00
trace.c MINOR: add a new function call tracer for debugging purposes 2012-05-26 00:12:37 +02:00
uri_auth.c BUG/MEDIUM: uri_auth: missing NULL check and memory leak on memory shortage 2013-01-24 16:19:19 +01:00