Changelog

version 3.2r1



2025/10/12 : 3.2r1 (1.0.0-353.347) - MINOR: quic: restore QUIC_HP_SAMPLE_LEN constant - BUG/MINOR: quic: too short PADDING frame for too short packets - BUILD: ssl: can't build when using -DLISTEN_DEFAULT_CIPHERS - MINOR: regex: use a thread-local match pointer for pcre2 - BUG/MAJOR: lb-chash: fix key calculation when using default hash-key id - BUG/MINOR: pools: don't report "limited to the first X entries" by default - BUG/MEDIUM: pools: fix crash on filtered "show pools" output - TESTS: quic: useless param for b_quic_dec_int() - BUG/MINOR: ssl: Potential NULL deref in trace macro - BUG/MINOR: ssl: Free key_base from global_ssl structure during deinit - BUG/MINOR: ssl: Free global_ssl structure contents during deinit 2025/10/14 : 3.2r1 (1.0.0-353.336) - MINOR: debug: add distro name and version in postmortem - BUG/MINOR: sink: retry attempt for sft server may never occur 2025/10/12 : 3.2r1 (1.0.0-353.334) - BUG/MEDIUM: apppet: Improve spinning loop detection with the new API - BUILD: makefile: disable tail calls optimizations with memory profiling - BUG/MINOR: ssl: leak crtlist_name in ssl-f-use - BUG/MINOR: ssl: leak in ssl-f-use - BUG/MINOR: ssl: always clear the remains of the first hello for the second one - BUG/MEDIUM: ssl: take care of second client hello - BUG/MINOr: hlua: Fix receive from HTTP applet by properly accounting data - BUG/MINOR: acme: avoid overflow when diff > notAfter - BUG/MEDIUM: resolvers: break an infinite loop in resolv_get_ip_from_response() - BUG/MINOR: h3: forbid 'Z' as well in header field names checks - BUG/MINOR: h2: forbid 'Z' as well in header field names checks - BUG/CRITICAL: mjson: fix possible DoS when parsing numbers - DOC: config: clarify some known limitations of the json_query() converter - BUG/MEDIUM: fwlc: Handle memory allocation failures. - MEDIUM: fwlc: Make it so fwlc_srv_reposition works with unqueued srv - MEDIUM: servers: Schedule the server requeue target on creation - BUG/MEDIUM: stick-tables: Make sure not to free a pending entry - MINOR: mt_list: Implement MT_LIST_POP_LOCKED() - BUG/MEDIUM: ssl: ca-file directory mode must read every certificates of a file - BUG/MINOR: pattern: Fix pattern lookup for map with opt@ prefix - BUG/MINOR: acme: possible overflow in acme_will_expire() - BUG/MINOR: acme: possible overflow on scheduling computation - BUG/MINOR: pattern: Properly flag virtual maps as using samples - BUG/MINOR: compression: Test payload size only if content-length is specified - MINOR: ssl: add the ssl_bc_sni sample fetch function to retrieve backend SNI - BUG/MEDIUM: wdt: improve stuck task detection accuracy - MINOR: sched: pass the thread number to is_sched_alive() - MINOR: sched: let's permit to share the local ctx between threads - BUG/MEDIUM: acme: free() of i2d_X509_REQ() with AWS-LC - BUG/MEDIUM: acme: cfg_postsection_acme() don't init correctly acme sections - BUG/MINOR: acme: don't unlink from acme_ctx_destroy() - CI: github: build halog on the vtest job - BUILD: halog: misleading indentation in halog.c - BUG/MINOR: pools: Fix the dump of pools info to deal with buffers limitations - BUG/MEDIUM: stick-tables: Don't let table_process_entry() handle refcnt - BUG/MINOR: acme/cli: wrong description for "acme challenge_ready" - MEDIUM: resolvers: make the process_resolvers() task single-threaded - MEDIUM: dns: bind the nameserver sockets to the initiating thread - OPTIM: sink: reduce contention on sink_announce_dropped() - BUG/MEDIUM: resolvers: Wake resolver task up whne unlinking a stream requester - BUG/MEDIUM: resolvers: Accept to create resolution without hostname - BUG/MEDIUM: resolvers: Make resolution owns its hostname_dn value - BUG/MEDIUM: resolvers: Test for empty tree when getting a record from DNS answer - BUG/MINOR: resolvers: Restore round-robin selection on records in DNS answers - BUG/MEDIUM: resolvers: Properly cache do-resolv resolution - MINOR: tools: don't emit "+0" for symbol names which exactly match known ones - MINOR: activity: indicate the number of calls on "show tasks" - MEDIUM: peers: move process_peer_sync() to a single thread - MEDIUM: stick-table: move process_table_expire() to a single thread - MEDIUM: peers: don't even try to process updates under contention - MEDIUM: stick-tables: don't wait indefinitely in stktable_add_pend_updates() - MEDIUM: stick-tables: give up on lock contention in process_table_expire() - MEDIUM: stick-tables: relax stktable_trash_oldest() to only purge what is needed - MINOR: stick-table: permit stksess_new() to temporarily allocate more entries - DEBUG: peers: export functions that use locks - MINOR: debug: report the time since last wakeup and call - MINOR: debug: report the number of loops and ctxsw for each thread - DEBUG: stream: count the number of passes in the connect loop - MINOR: debug: report the process id in warnings and panics - BUG/MINOR: tcpcheck: Don't use sni as pool-conn-name for non-SSL connections - BUG/MINOR: server: Update healthcheck when server settings are changed via CLI - BUG/MEDIUM: server: Use sni as pool connection name for SSL server only - MINOR: server: Parse sni and pool-conn-name expressions in a dedicated function - OPTIM: stick-tables: exit expiry faster when the update lock is held - MINOR: stick-tables: limit the number of visited nodes during expiration - BUG/MEDIUM: pattern: fix possible infinite loops on deletion (try 2) - DEBUG: stick-tables: export stktable_add_pend_updates() for better reporting - BUG/MEDIUM: ring: invert the length check to avoid an int overflow - BUG/MINOR: resolvers: always normalize FQDN from response - BUG/MINOR: ocsp: Crash when updating CA during ocsp updates - BUG/MEDIUM: http_ana: fix potential NULL deref in http_process_req_common() - BUG/MINOR: ocsp: prototype inconsistency - BUG/MINOR: ssl: Fix potential NULL deref in trace callback - BUG/MINOR: ssl: Potential NULL deref in trace macro - BUG/MEDIUM: jws: return size_t in JWS functions - BUG/MINOR: acme: null pointer dereference upon allocation failure - BUG/MAJOR: stream: Force channel analysis on successful synchronous send - BUG/MAJOR: stream: Remove READ/WRITE events on channels after analysers eval - BUG/MINOR: stick-table: make sure never to miss a process_table_expire update - BUG/MEDIUM: stick-tables: don't loop on non-expirable entries - BUG/MINOR: activity: fix reporting of task latency - BUG/MEDIUM: ssl: create the mux immediately on early data - BUG/MEDIUM: h1: Allow reception if we have early data - BUG/MEDIUM: checks: fix ALPN inheritance from server - OPTIM: check: do not delay MUX for ALPN if SSL not active - BUG/MEDIUM: mux-h2: Reinforce conditions to report an error to app-layer stream - BUG/MEDIUM: mux-h2: Report RST/error to app-layer stream during 0-copy fwding - BUG/MINOR: mux-h2: Remove H2_CF_DEM_DFULL flags when the demux buffer is reset - BUG/MEDIUM: mux-h2: Restart reading when mbuf ring is no longer full - BUG/MEDIUM: mux-h2; Don't block reveives in H2_CS_ERROR and H2_CS_ERROR2 states - BUG/MEDIUM: mux-h2: Reset MUX blocking flags when a send error is caught - CLEANUP: quic: fix typo in quic_tx trace - BUG/MINOR: cpu_topo: work around a small bug in musl's CPU_ISSET() - BUILD: trace: silence a bogus build warning at -Og - BUG/MINOR: log: fix potential memory leak upon error in add_to_logformat_list() - BUG/MINOR: connection: streamline conn detach from lists - BUG/MEDIUM: conn: fix UAF on connection after reversal on edge - REGTESTS: explicitly use "balance roundrobin" where RR is needed - BUG/MINOR: check: fix dst address when reusing a connection - BUG/MINOR: check: ensure check-reuse is compatible with SSL - BUG/MEDIUM: peers: don't fail twice to grab the update lock - BUG/MINOR: stick-tables: never leave used entries without expiration - BUG/MEDIUM: stick-tables: don't leave the expire loop with elements deleted - MINOR: quic: Add more information about RX packets - BUILD: acl: silence a possible null deref warning in parse_acl_expr() - BUG/MINOR: haproxy: be sure not to quit too early on soft stop - BUG/MINOR: quic: fix padding issue on INITIAL retransmit - BUG/MINOR: quic: fix room check if padding requested - BUG/MINOR: quic: ignore AGAIN ncbuf err when parsing CRYPTO frames - BUG/MINOR: tools: Add OOM check for malloc() in indent_msg() - BUG/MINOR: compression: Add OOM check for calloc() in parse_compression_options() - BUG/MINOR: cfgparse: Add OOM check for calloc() in cfg_parse_listen() - BUG/MINOR: acl: Add OOM check for calloc() in smp_fetch_acl_parse() - BUG/MINOR: log: Add OOM checks for calloc() and malloc() in logformat parser and dup_logger() - BUG/MINOR: halog: Add OOM checks for calloc() in filter_count_srv_status() and filter_count_url() - BUG/MEDIUM: server: Duplicate healthcheck's alpn inherited from default server - REG-TESTS: map_redirect: Don't use hdr_dom in ACLs with "-m end" matching method - BUG/MAJOR: mux-quic: fix crash on reload during emission - BUG/MEDIUM: quic: CRYPTO frame freeing without eb_delete() - CLEANUP: quic: remove a useless CRYPTO frame variable assignment - MINOR: doc: add missing statistics column - MINOR: doc: add missing statistics column - DOC: configuration: confuse "strict-mode" with "zero-warning" - DOC: unreliable sockpair@ on macOS - BUILD: mworker: fix ignoring return value of read - BUG/MINOR: server: decrement session idle_conns on del server - BUG/MINOR: connection: remove extra session_unown_conn() on reverse - BUG/MINOR: connection: rearrange union list members - BUG/MEDIUM: mworker: fix startup and reload on macOS - BUG/MINOR: acl: set arg_list->kw to aclkw->kw string literal if aclkw is found - BUG/MINOR: mux-quic: trace with non initialized qcc - MINOR: quic: remove ->offset qf_crypto struct field - DOC: configuration: clarify 'default-crt' and implicit default certificates - MINOR: ssl: diagnostic warning when both 'default-crt' and 'strict-sni' are used - BUG/MINOR: quic: reorder fragmented RX CRYPTO frames by their offsets - MINOR: sample: Add base2 converter - MINOR: sample: Add le2dec (little endian to decimal) sample fetch - MINOR: hapee/da: remove STG_LOCK INITCALL - MINOR: hapee/51d: remove STG_LOCK INITCALL - BUG/MINOR: hapee: fix module bind_parse callback prototype - MEDIUM: hapee/51d: use '_' instead of '-' in 51d-set-property-vars() names - MEDIUM: hapee/51d: set version and date metadata variables - REORG: hapee/51d: Create a function for setting property variables - MEDIUM: hapee/51d: add a new action "http-request 51d-set-property-vars" - MINOR: hapee/WURFL: transfer error status from the _wurfl_reload() function - MINOR: hapee/WURFL: added live update database function - MINOR: hapee/WURFL: added custom API log function - MINOR: hapee/WURFL: added function to check correct module initialization - BUG/MINOR: hapee/WURFL: corrected version check of used wurfl library - MINOR: hapee/da: alert in case of incorrect data version - BUG/MINOR: hapee/da: enabling use of precompiled json database in 'deviceatlas-json-file' - BUG/MINOR: hapee/da: fixed bug when using binary version of database - BUG/BUILD: hapee/da: added preprocessed source code generation for *.cpp files - BUILD: hapee/da: repaired build in case of using old DeviceAtlas library - MINOR: hapee/da: add function that allow data reload - MINOR: hapee/da: add spin locking - MINOR: hapee/da: add support for loading a precompiled json data - MEDIUM: hapee/da: Revert "MEDIUM: da: update module to handle schedule mode." - MEDIUM: hapee/51d: support data reload for 51Degrees V4 engine - MINOR: hapee/51d: add function that returns path to 51Degrees data file - MINOR: hapee/51d: add function that allow data reload - BUG/MINOR: hapee/51d: add spin locking - BUILD: hapee/51d: fix error when building with 51Degrees enabled - BUG/MEDIUM: hapee/51d: fix a segfault on exit when 51d configuration is not loaded - MEDIUM: hapee/51d: use fiftyoneDegreesProvider to access the pool and dataset - BUG/MEDIUM: spoe: Improve error detection in SPOE applet on client abort - BUG/MEDIUM: http_ana: handle yield for "stats http-request" evaluation - BUG/MEDIUM: mux-spop: Reject connection attempts from a non-spop frontend - MINOR: http_ana: fix typo in http_res_get_intercept_rule - MINOR: quic: centralize padding for HP sampling on packet building - BUG/MINOR: quic: don't coalesce probing and ACK packet of same type - BUG/MAJOR: quic: fix INITIAL padding with probing packet only - BUG/MINOR: quic: do not emit probe data if CONNECTION_CLOSE requested - BUG/MEDIUM: quic: reset padding when building GSO datagrams - MINOR: dns: dns_connect_nameserver: fix fd leak at error path - BUG/MEDIUM: ssl: apply ssl-f-use on every "ssl" bind - BUG/MEDIUM: mux-h2: fix crash on idle-ping due to unwanted ABORT_NOW - BUG/MEDIUM: mworker: more verbose error upon loading failure - BUG/MEDIUM: cli: Report inbuf is no longer full when a line is consumed - BUG/MINOR: spoe: Properly detect and skip empty NOTIFY frames - MEDIUM: dns: don't call connect to dest socket for AF_INET* - BUG/MINOR: mux-h1: fix wrong lock label - BUG/MEDIUM: quic: listener connection stuck during handshakes (OpenSSL 3.5) - MINOR: quic: implement qc_ssl_do_hanshake() - BUG/MEDIUM: Remove sync sends from streams to applets - BUG/MEDIUM: stconn: Fix conditions to know an applet can get data from stream - BUG/MEDIUM: http-client: Test HTX_FL_EOM flag before commiting the HTX buffer - BUG/MEDIUM: mux-quic: adjust wakeup behavior - DOC: config: recommend single quoting passwords - DOC: management: fix typo in commit f4f93c56 - BUG/MINOR: init: Initialize random seed earlier in the init process - BUG/MEDIUM: ssl: fix build with AWS-LC - BUG/MEDIUM: ssl: Fix 0rtt to the server - MINOR: sock: update broken accept4 detection for older hardwares. - BUG/MINOR: stick-table: cap sticky counter idx with tune.nb_stk_ctr instead of MAX_SESS_STKCTR - BUILD: compat: always set _POSIX_VERSION to ease comparisons - BUILD: compat: provide relaxed versions of the MIN/MAX macros - DOC: list missing global QUIC settings - CLEANUP: http-client: Remove useless indentation when sending request body - BUG/MINOR: mux-quic: ensure close-spread-time is properly applied - BUG/MINOR mux-quic: apply correctly timeout on output pending data - BUG/MINOR: hq-interop: fix FIN transmission - BUG/MINOR: logs: fix log-steps extra log origins selection - BUG/MEDIUM: threads: Disable the workaround to load libgcc_s on macOS - BUG/MINOR: halog: exit with error when some output filters are set simultaneosly - BUG/MINOR: applet: Don't trigger BUG_ON if the tid is not on appctx init - MINOR: h3: remove unused outbuf in h3_resp_headers_send() - BUG/MINOR: quic: Wrong source address use on FreeBSD - BUG/MEDIUM: h3: handle interim response properly on FE side - MINOR: qmux: change API for snd_buf FIN transmission - BUG/MINOR: h3: ensure that invalid status code are not encoded (FE side) - BUG/MINOR: h3: properly realloc buffer after interim response encoding - BUG/MEDIUM: h3: do not overwrite interim with final response - BUG/MINOR: h1-htx: Don't forget to init flags in h1_format_htx_msg function - BUG/MINOR: mux-h1: Use configured error files if possible for early H1 errors - MINOR: h1-htx: Add function to format an HTX message in its H1 representation - BUG/MEDIUM: http-client: Notify applet has more data to deliver until the EOM - BUG/MEDIUM: http-client: Drain the request if an early response is received - BUG/MINOR: http-client: Reject any 101-switching-protocols response - BUG/MINOR: http-client: Ignore 1XX interim responses in non-HTX mode - BUG/MEDIUM: http-client: Ask for more room when request data cannot be xferred - BUG/MEDIUM: http-client: Properly inc input data when HTX blocks are xferred - BUG/MEDIUM: http-client: Don't wake http-client applet if nothing was xferred - BUG/MEDIUM: quic: Crash after QUIC server callbacks restoration (OpenSSL 3.5) - MINOR: quic: Prevent QUIC build with OpenSSL 3.5 new QUIC API version < 3.5.1 - BUG/MINOR: listener: really assign distinct IDs to shards - MEDIUM: ssl/cli: relax crt insertion in crt-list of type directory - DOC: management: clarify usage of -V with -c - MEDIUM: acme: use lowercase for challenge names in configuration - BUG/MINOR: acme: possible integer underflow in acme_txt_record() - MINOR: acme: update the log for DNS-01 - MEDIUM: acme: allow to wait and restart the task for DNS-01 - MINOR: acme: emit the DNS-01 challenge details on the dpapi sink - MINOR: acme: emit a log for DNS-01 challenge response - BUG/MEDIUM: hlua_fcn: ensure systematic watcher cleanup for server list iterator - BUILD: acme: avoid declaring TRACE_SOURCE in acme-t.h - CLEANUP: ssl: Rename ssl_trace-t.h to ssl_trace.h - BUG/MEDIUM: mux-quic: ensure Early-data header is set - BUG/MINOR: hlua: take default-path into account with lua-load-per-thread - BUG/MEDIUM: logs: fix sess_build_logline_orig() recursion with options - BUG/MEDIUM: dns: Reset reconnect tempo when connection is finally established - BUG/MEDIUM: hlua: Report to SC when output data are blocked on a lua socket - BUG/MEDIUM: hlua: Report to SC when data were consumed on a lua socket - BUG/MINOR: hlua: Skip headers when a receive is performed on an HTTP applet - MINOR: acme: implement traces - MINOR: acme: add ACME to the haproxy -vv feature list - CLEANUP: acme: fix wrong spelling of "resources" - BUG/MINOR: acme: allow "processing" in challenge requests - MINOR: acme: remove acme_req_auth() and use acme_post_as_get() instead - BUG/MEDIUM: acme: use POST-as-GET instead of GET for resources - BUG/MEDIUM: ssl/clienthello: ECDSA with ssl-max-ver TLSv1.2 and no ECDSA ciphers - DOC: deviceatlas build clarifications - BUILD/MEDIUM: deviceatlas: fix when installed in custom locations. - BUG/MINOR: http-act: Fix parsing of the expression argument for pause action - BUG/MINOR: ssl: crash in ssl_sock_io_cb() with SSL traces and idle connections - BUG/MINOR: ssl/ocsp: fix definition discrepancies with ocsp_update_init() - BUG/MINOR: quic: Missing TLS 1.3 QUIC cipher suites and groups inits (OpenSSL 3.5 QUIC API) - CI: github: update to OpenSSL 3.5.1 - BUG/MEDIUM: quic: SSL/TCP handshake failures with OpenSSL 3.5 - BUILD: quic: QUIC build against OpenSSL 3.5 broken - CI: github: update the stable CI to ubuntu-24.04 - CI: github: add an OpenSSL 3.5.0 job - CI: enable USE_QUIC=1 for OpenSSL versions >= 3.5.0 - BUG/MINOR: proto-tcp: Take care to initialized tcp_md5sig structure - BUILD: cfgparse-tcp: Add _GNU_SOURCE for TCP_MD5SIG_MAXKEYLEN - MINOR: proto-tcp: Add support for TCP MD5 signature for listeners and servers - BUILD: dev/phash: remove the accidentally committed a.out file - BUG/MINOR: httpclient: wrongly named httpproxy flag - DOC: Fix 'jwt_verify' converter doc - BUG/MINOR: jwt: Copy input and parameters in dedicated buffers in jwt_verify converter - BUG/MEDIUM: mux-h2: Properly handle connection error during preface sending - BUG/MEDIUM: hlua: Forbid any L6/L7 sample fetche functions from lua services - MINOR: ssl: check TLS1.3 ciphersuites again in clienthello with recent AWS-LC - BUG/MINOR: tools: use my_unsetenv instead of unsetenv - SCRIPTS: drop the HTML generation from announce-release - DOC: config: crt-list clarify default cert + cert-bundle - MINOR: quic: Useless TX buffer size reduction in closing state - BUG/MINOR: quic: wrong QUIC_FT_CONNECTION_CLOSE(0x1c) frame encoding - DOC: configuration: add details on prefer-client-ciphers - BUG/MINOR: log: Be able to use %ID alias at anytime of the stream's evaluation - BUG/MINOR: stream: Avoid recursive evaluation for unique-id based on itself - BUG/MINOR: tools: only reset argument start upon new argument - MINOR: fwlc: Factorize code. - BUG/MAJOR: fwlc: Count an avoided server as unusable. - BUG/MINOR: mux-quic/h3: properly handle too low peer fctl initial stream - DOC: config: prefer-last-server: add notes for non-deterministic algorithms - BUG/MEDIUM: check: Set SOCKERR by default when a connection error is reported - MINOR: cli: handle EOS/ERROR first - BUG/MEDIUM: cli: Don't consume data if outbuf is full or not available - BUG/MINOR: quic: Fix OSSL_FUNC_SSL_QUIC_TLS_got_transport_params_fn callback (OpenSSL3.5) - BUG/MINOR: http-ana: Properly handle keep-query redirect option if no QS - BUG/MINOR: config/server: reject QUIC addresses - BUG/MINIR: h1: Fix doc of 'accept-unsafe-...-request' about URI parsing - BUG/MEDIUM: fd: Use the provided tgid in fd_insert() to get tgroup_info - BUG/MINOR: quic: Missing SSL session object freeing - BUG/MINOR: config: fix arg number reported on empty arg warning - BUG/MINOR: config: emit warning for empty args only in discovery mode - BUG/MEDIUM: cli: Properly parse empty lines and avoid crashed - BUG/MINOR: mux-spop: Fix null-pointer deref on SPOP stream allocation failure - BUG/MEDIUM: check: Requeue healthchecks on I/O events to handle check timeout - BUG/MAJOR: leastconn: Protect tree_elt with the lbprm lock - DOC: config: Fix a typo in 2.7 (Name format for maps and ACLs) - BUILD: tools: properly define ha_dump_backtrace() to avoid a build warning - MINOR: hapee/modules: report the per-stream allocated size for each module - BUG/MEDIUM: hapee: prevent the module file name being overwritten - MEDIUM: hapee: HAPEE_MODULE_DECLARE() allows to declare an HAPEE module - BUG/MINOR: hapee: Makefile: bad substitution for MODVERSION variable - BUG/MINOR: hapee: relax __vers symbol check - BUG/MINOR: hapee/modules: can't load modules with USE_OBSOLETE_LINKER - BUG/MINOR: hapee: remove leading \n on __vers error - MEDIUM: hapee: warn on unsupported initcalls - BUG/MINOR: hapee: forbid to load a module twice - HAPEE: udp: update structs and functions required for the UDP module - HAPEE: makefile: automatically build objects in addons/hapee_* - HAPEE: makefile: update the cleanup rule to also remove *.i from addons - HAPEE: addons: quic CID in -vv - HAPEE: addons: adds quic CID generator to interop with packetshield - MEDIUM: hapee: does not pass OPTION_LDFLAGS to modules - MINOR: hapee/modules: check if we generate the API hash correctly - BUG/MINOR: hapee/modules: adjust include match() in gen-modules-config-h.awk - BUG/MINOR: hapee/modules: initialize the module head list - BUILD: hapee/modules: select either md5 or md5sum - MEDIUM: hapee/modules: load the STG_REGISTER initcalls - BUG/MINOR: hapee/modules: display detailed error message on mod_init() failure - MINOR: hapee/modules: add a new label MODULES_LOCK to the lock_label enum - MINOR: hapee/modules: add the ability to register variable and functions. - MEDIUM: hapee/modules: 'modules list' on the cli shows currently loaded modules - MINOR: hapee/modules: terminate properly loaded modules if possible - MEDIUM: hapee/modules: add memory reservation support for the modules - MINOR: hapee: change URLs for 3.2r1 - BUILD: hapee/modules: update HAPEE version macro to 3.2r1 - BUILD: hapee/modules: add macros to compute numerical value of a HAPEE version - BUILD: hapee/modules: add version of the module in the defines - MEDIUM: hapee/modules: add modules support


HAPEE-LB 3.2r1 – Changelog