Changes since version 1.9-dev0 : Aleksandar Lazic (1): CONTRIB: halog: Add help text for -s switch in halog program Aurélien Nephtali (1): BUG/MINOR: init: Add missing brackets in the code parsing -sf/-st Bertrand Jacquin (8): MINOR: netscaler: respect syntax MINOR: netscaler: remove the use of cip_magic only used once MINOR: netscaler: rename cip_len to clarify its uage BUG/MEDIUM: netscaler: use the appropriate IPv6 header size BUG/MAJOR: netscaler: address truncated CIP header detection MINOR: netscaler: check in one-shot if buffer is large enough for IP and TCP header MEDIUM: netscaler: do not analyze original IP packet size MEDIUM: netscaler: add support for standard NetScaler CIP protocol Chris Lane (1): MINOR: init: emit warning when -sf/-sd cannot parse argument Christian Ruppert (1): BUILD: Fix LDFLAGS vs. LIBS re linking order in various makefiles Christopher Faulet (29): BUG/MEDIUM: tcp-check: Don't lock the server in tcpcheck_main BUG/MAJOR: thread: Be sure to request a sync between threads only once at a time BUG/MINOR: action: Don't check http capture rules when no id is defined BUG/MEDIUM: threads/vars: Fix deadlock in register_name BUG/MEDIUM: mworker: Set FD_CLOEXEC flag on log fd MINOR: spoe: add register-var-names directive in spoe-agent configuration MINOR: spoe: Don't queue a SPOE context if nothing is sent MINOR: threads/fd: Use a bitfield to know if there are FDs for a thread in the FD cache BUG/MEDIUM: threads/polling: Use fd_cache_mask instead of fd_cache_num BUG/MEDIUM: threads/server: Fix deadlock in srv_set_stopping/srv_set_admin_flag BUG/MEDIUM: checks: Don't try to release undefined conn_stream when a check is freed BUG/MINOR: kqueue/threads: Don't forget to close kqueue_fd[tid] on each thread MINOR: threads: Use __decl_hathreads instead of #ifdef/#endif BUILD: epoll/threads: Add test on MAX_THREADS to avoid warnings when complied without threads BUILD: kqueue/threads: Add test on MAX_THREADS to avoid warnings when complied without threads BUG/MINOR: threads: Update labels array because of changes in lock_label enum BUG/MEDIUM: spoe: Always try to receive or send the frame to detect shutdowns BUG/MEDIUM: spoe: Allow producer to read and to forward shutdown on request side MINOR: spoe: Remove check on min_applets number when a SPOE context is queued MINOR: spoe: Always link a SPOE context with the applet processing it MINOR: spoe: Replace sending_rate by a frequency counter MINOR: spoe: Count the number of frames waiting for an ack for each applet MEDIUM: spoe: Use an ebtree to manage idle applets MINOR: spoa_example: Count the number of frames processed by each worker MINOR: spoe: Add max-waiting-frames directive in spoe-agent configuration BUG/MINOR: ssl/threads: Make management of the TLS ticket keys files thread-safe BUG/MEDIUM: ssl: Shutdown the connection for reading on SSL_ERROR_SYSCALL BUG/MEDIUM: http: Switch the HTTP response in tunnel mode as earlier as possible BUG/MINOR: h2: Set the target of dbuf_wait to h2c Cyril Bonté (3): DOC: cache: update sections and fix some typos BUG: MAJOR: lb_map: server map calculation broken BUG: MINOR: http: don't check http-request capture id when len is provided David Carlier (6): BUILD/MINOR: deviceatlas: enable thread support BUILD/MINOR: haproxy : FreeBSD/cpu affinity needs pthread_np header BUILD/MINOR: Makefile : enabling USE_CPU_AFFINITY BUILD/MINOR: haproxy: compiling config cpu parsing handling when needed BUILD/MINOR: ancient gcc versions atomic fix BUILD/MINOR: memory: stdint is needed for uintptr_t Davor Ocelic (2): DOC/MINOR: intro: typo, wording, formatting fixes DOC/MINOR: configuration: typo, formatting fixes Emeric Brun (8): BUG/MEDIUM: peers: fix some track counter rules dont register entries for sync. BUG/MAJOR: thread/peers: fix deadlock on peers sync. BUG/MEDIUM: ssl engines: Fix async engines fds were not considered to fix fd limit automatically. BUG/MEDIUM: checks: a down server going to maint remains definitely stucked on down state. BUG/MEDIUM: checks: a server passed in maint state was not forced down. BUG/MEDIUM: peers: fix expire date wasn't updated if entry is modified remotely. BUG/MEDIUM: ssl/sample: ssl_bc_* fetch keywords are broken. MINOR: ssl/sample: adds ssl_bc_is_resumed fetch keyword. Emmanuel Hocdet (2): BUG/MINOR: ssl: CO_FL_EARLY_DATA removal is managed by stream MINOR: introduce proxy-v2-options for send-proxy-v2 Eric Salama (1): BUG/MEDIUM: lua: fix crash when using bogus mode in register_service() Etienne Carriere (3): MINOR: sample: add len converter MINOR: spoe: add force-set-var option in spoe-agent configuration MINOR: sample: add date_us sample Frédéric Lécaille (2): MINOR: config: Enable tracking of up to MAX_SESS_STKCTR stick counters. MINOR: stick-tables: Adds support for new "gpc1" and "gpc1_rate" counters. Jérôme Magnin (2): DOC: clarify the scope of ssl_fc_is_resumed DOC: Describe routing impact of using interface keyword on bind lines Lukas Tribus (1): DOC: don't suggest using http-server-close Olivier Houchard (17): BUG/MEDIUM: kqueue: Don't bother closing the kqueue after fork. MINOR: threads: Fix pthread_setaffinity_np on FreeBSD. BUG/MEDIUM: checks: Be sure we have a mux if we created a cs. CLEANUP: rbtree: remove MINOR: dns: Handle SRV record weight correctly. MINOR: servers: Don't report duplicate dyncookies for disabled servers. MINOR: threads: Fix build when we're not compiling with threads. MINOR: init: make stdout unbuffered MINOR: early data: Don't rely on CO_FL_EARLY_DATA to wake up streams. MINOR: early data: Never remove the CO_FL_EARLY_DATA flag. MINOR: compiler: introduce offsetoff(). MINOR: threads: Introduce double-width CAS on x86_64 and arm. MINOR: pools/threads: Implement lockless memory pools. MAJOR: fd/threads: Make the fdcache mostly lockless. MEDIUM: fd/threads: Make sure we don't miss a fd cache entry. BUG/MINOR: fd/threads: properly lock the FD before adding it to the fd cache. BUG/MEDIUM: ssl: Don't always treat SSL_ERROR_SYSCALL as unrecovarable. Pavlos Parissis (1): DOC: Mention -Ws in the list of available options PiBa-NL (4): BUG/MINOR: mworker: fix validity check for the pipe FDs BUG/MINOR: mworker: detach from tty when in daemon mode BUG/MEDIUM: email-alert: don't set server check status from a email-alert task BUG/MEDIUM: mworker: don't close stdio several time Ryan O'Hara (2): CONTRIB: iprange: Fix compiler warning in iprange.c CONTRIB: halog: Fix compiler warnings in halog.c Thierry FOURNIER (3): DOC: notifications: add precisions about thread usage BUG/MEDIUM: lua/notification: memory leak DOC: lua: new prototype for function "register_action()" Tim Duesterhus (21): MINOR: mworker: Update messages referencing exit-on-failure MINOR: mworker: Improve wording in `void mworker_wait()` BUG/MINOR: lua: Fix default value for pattern in Socket.receive DOC: lua: Fix typos in comments of hlua_socket_receive BUG/MEDIUM: lua: Fix IPv6 with separate port support for Socket.connect BUG/MINOR: lua: Fix return value of Socket.settimeout CLEANUP: sample: Fix comment encoding of sample.c CLEANUP: sample: Fix outdated comment about sample casts functions BUG/MINOR: sample: Fix output type of c_ipv62ip CLEANUP: Fix typo in ARGT_MSK6 comment CLEANUP: standard: Use len2mask4 in str2mask MINOR: standard: Add str2mask6 function MINOR: config: Add support for ARGT_MSK6 MEDIUM: sample: Add IPv6 support to the ipmask converter BUG/MEDIUM: standard: Fix memory leak in str2ip2() DOC: cfgparse: Warn on option (tcp|http)log in backend CLEANUP: cfgparse: Remove unused label end CLEANUP: spoe: Remove unused label retry CLEANUP: h2: Remove unused labels from mux_h2.c CLEANUP: pools: Remove unused end label in memory.h CLEANUP: standard: Fix typo in IPv6 mask example Vincent Bernat (1): MINOR: systemd: remove comment about HAPROXY_STATS_SOCKET William Lallemand (6): BUG/MEDIUM: ssl: don't allocate shctx several time BUG/MEDIUM: cache: bad computation of the remaining size BUG/MINOR: ssl: support tune.ssl.cachesize 0 again MINOR: don't close stdio anymore BUG/MEDIUM: ssl: cache doesn't release shctx blocks BUG/MEDIUM: mworker: execvp failure depending on argv[0] Willy Tarreau (120): BUILD: checks: don't include server.h BUG/MEDIUM: stream: fix session leak on applet-initiated connections BUG/MEDIUM: threads/peers: decrement, not increment jobs on quitting BUG/MEDIUM: h2: don't report an error after parsing a 100-continue response MINOR: config: report when "monitor fail" rules are misplaced BUG/MINOR: hpack: fix debugging output of pseudo header names BUG/MINOR: hpack: must reject huffman literals padded with more than 7 bits BUG/MINOR: hpack: reject invalid header index BUG/MINOR: hpack: dynamic table size updates are only allowed before headers BUG/MAJOR: h2: correctly check the request length when building an H1 request BUG/MINOR: h2: immediately close if receiving GOAWAY after the last stream BUG/MINOR: h2: try to abort closed streams as soon as possible BUG/MINOR: h2: ":path" must not be empty BUG/MINOR: h2: fix a typo causing PING/ACK to be responded to BUG/MINOR: h2: the TE header if present may only contain trailers BUG/MEDIUM: h2: enforce the per-connection stream limit BUG/MINOR: h2: do not accept SETTINGS_ENABLE_PUSH other than 0 or 1 BUG/MINOR: h2: reject incorrect stream dependencies on HEADERS frame BUG/MINOR: h2: properly check PRIORITY frames BUG/MINOR: h2: reject response pseudo-headers from requests BUG/MEDIUM: h2: remove connection-specific headers from request BUG/MEDIUM: h2: do not accept upper case letters in request header names BUG/MINOR: h2: use the H2_F_DATA_* macros for DATA frames BUG/MAJOR: hpack: don't pretend large headers fit in empty table BUG/MEDIUM: mworker: also close peers sockets in the master BUG/MEDIUM: peers: set NOLINGER on the outgoing stream interface BUG/MEDIUM: h2: fix handling of end of stream again MINOR: conn_stream: add new flag CS_FL_RCV_MORE to indicate pending data BUG/MEDIUM: stream-int: always set SI_FL_WAIT_ROOM on CS_FL_RCV_MORE BUG/MEDIUM: h2: automatically set CS_FL_RCV_MORE when the output buffer is full BUG/MEDIUM: h2: enable recv polling whenever demuxing is possible BUG/MEDIUM: h2: work around a connection API limitation BUG/MEDIUM: h2: debug incoming traffic in h2_wake() MINOR: h2: store the demux padding length in the h2c struct BUG/MEDIUM: h2: support uploading partial DATA frames MINOR: h2: don't demand that a DATA frame is complete before processing it BUG/MEDIUM: h2: don't switch the state to HREM before end of DATA frame BUG/MEDIUM: h2: don't close after the first DATA frame on tunnelled responses BUG/MEDIUM: http: don't disable lingering on requests with tunnelled responses BUG/MEDIUM: h2: fix stream limit enforcement BUG/MINOR: stream-int: don't try to receive again after receiving an EOS MINOR: sample: rename the "len" converter to "length" BUG/MINOR: h2: properly report a stream error on RST_STREAM MINOR: mux: add flags to describe a mux's capabilities MINOR: stream-int: set flag SI_FL_CLEAN_ABRT when mux supports clean aborts BUG/MEDIUM: stream: don't consider abortonclose on muxes which close cleanly MINOR: http: adjust the list of supposedly cacheable methods MINOR: http: update the list of cacheable status codes as per RFC7231 MINOR: http: start to compute the transaction's cacheability from the request BUG/MINOR: http: do not ignore cache-control: public BUG/MINOR: http: properly detect max-age=0 and s-maxage=0 in responses BUG/MINOR: cache: do not force the TX_CACHEABLE flag before checking cacheability MINOR: http: add a function to check request's cache-control header field BUG/MEDIUM: cache: do not try to retrieve host-less requests from the cache BUG/MEDIUM: cache: replace old object on store BUG/MEDIUM: cache: respect the request cache-control header BUG/MEDIUM: cache: don't cache the response on no-cache="set-cookie" BUG/MAJOR: connection: refine the situations where we don't send shutw() BUG/MEDIUM: checks: properly set servers to stopping state on 404 BUG/MEDIUM: h2: properly handle and report some stream errors BUG/MEDIUM: h2: improve handling of frames received on closed streams BUG/MEDIUM: h2: ensure we always know the stream before sending a reset BUG/MEDIUM: http: don't automatically forward request close BUG/MAJOR: hpack: don't return direct references to the dynamic headers table MINOR: h2: add a function to report pseudo-header names DEBUG: hpack: make hpack_dht_dump() expose the output file DEBUG: hpack: add more traces to the hpack decoder CONTRIB: hpack: add an hpack decoder MEDIUM: h2: prepare a graceful shutdown when the frontend is stopped BUG/MEDIUM: h2: properly handle the END_STREAM flag on empty DATA frames BUILD: ssl: silence a warning when building without NPN nor ALPN support MINOR: hathreads: add support for gcc < 4.7 BUG/MEDIUM: stream: properly handle client aborts during redispatch CONTRIB: debug: fix a few flags definitions BUG/MINOR: poll: too large size allocation for FD events MINOR: global/threads: move cpu_map at the end of the global struct MINOR: threads: add a MAX_THREADS define instead of LONGBITS MINOR: global: add some global activity counters to help debugging BUG/MEDIUM: fd: maintain a per-thread update mask MINOR: fd: add a bitmask to indicate that an FD is known by the poller BUG/MEDIUM: epoll/threads: use one epoll_fd per thread BUG/MEDIUM: kqueue/threads: use one kqueue_fd per thread BUG/MEDIUM: threads/mworker: fix a race on startup BUG/MINOR: mworker: only write to pidfile if it exists BUG/MINOR: threads: always set an owner to the thread_sync pipe BUG/MINOR: cli: use global.maxsock and not maxfd to list all FDs MINOR: polling: make epoll and kqueue not depend on maxfd anymore MINOR: fd: don't report maxfd in alert messages MEDIUM: polling: start to move maxfd computation to the pollers CLEANUP: fd/threads: remove the now unused fdtab_lock MINOR: poll: more accurately compute the new maxfd in the loop CLEANUP: fd: remove the unused "new" field MINOR: fd: move the hap_fd_{clr,set,isset} functions to fd.h MEDIUM: select: make use of hap_fd_* functions MEDIUM: fd: use atomic ops for hap_fd_{clr,set} and remove poll_lock MEDIUM: select: don't use the old FD state anymore MEDIUM: poll: don't use the old FD state anymore MINOR: fd: pass the iocb and owner to fd_insert() BUG/MINOR: epoll/threads: only call epoll_ctl(DEL) on polled FDs MINOR: threads: add test and set/reset operations MAJOR: fd: compute the new fd polling state out of the fd lock MINOR: epoll: get rid of the now useless fd_compute_new_polled_status() MINOR: kqueue: get rid of the now useless fd_compute_new_polled_status() MINOR: poll: get rid of the now useless fd_compute_new_polled_status() MINOR: select: get rid of the now useless fd_compute_new_polled_status() CLEANUP: fd: remove the now unused fd_compute_new_polled_status() function MEDIUM: fd: make updt_fd_polling() use atomics MEDIUM: poller: use atomic ops to update the fdtab mask MINOR: fd: move the fd_{add_to,rm_from}_fdlist functions to fd.c BUG/MINOR: fd/threads: properly dereference fdcache as volatile MINOR: fd: remove the unneeded last CAS when adding an fd to the list MINOR: fd: reorder fd_add_to_fd_list() BUG/MINOR: time/threads: ensure the adjusted time is always correct BUILD: fd/threads: fix breakage build breakage without threads BUG/MINOR: config: don't emit a warning when global stats is incompletely configured BUG/MEDIUM: threads: fix the double CAS implementation for ARMv7 MINOR: sample: add a new "concat" converter BUG/MINOR: pools/threads: don't ignore DEBUG_UAF on double-word CAS capable archs BUG/MINOR: debug/pools: properly handle out-of-memory when building with DEBUG_UAF MINOR: debug/pools: make DEBUG_UAF also detect underflows Yves Lafon (1): MINOR: stats: display the number of threads in the statistics.