mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-01-20 20:50:44 +00:00
5a94037644
18 Commits
Author | SHA1 | Message | Date | |
---|---|---|---|---|
Willy Tarreau
|
fee48ce452 |
[RELEASE] Released version 1.5-dev14
Released version 1.5-dev14 with the following main changes : - DOC: fix minor typos - BUG/MEDIUM: compression: does not forward trailers - MINOR: buffer_dump with ASCII - BUG/MEDIUM: checks: mark the check as stopped after a connect error - BUG/MEDIUM: checks: ensure we completely disable polling upon success - BUG/MINOR: checks: don't mark the FD as closed before transport close - MEDIUM: checks: avoid accumulating TIME_WAITs during checks - MINOR: cli: report the msg state in full text in "show sess $PTR" - CLEANUP: checks: rename some server check flags - MAJOR: checks: rework completely bogus state machine - BUG/MINOR: checks: slightly clean the state machine up - MEDIUM: checks: avoid waking the application up for pure TCP checks - MEDIUM: checks: close the socket as soon as we have a response - BUG/MAJOR: checks: close FD on all timeouts - MINOR: checks: fix recv polling after connect() - MEDIUM: connection: provide a common conn_full_close() function - BUG/MEDIUM: checks: prevent TIME_WAITs from appearing also on timeouts - BUG/MAJOR: peers: the listener's maxaccept was not set and caused loops - MINOR: listeners: make the accept loop more robust when maxaccept==0 - BUG/MEDIUM: acl: correctly resolve all args, not just the first one - BUG/MEDIUM: acl: make prue_acl_expr() correctly free ACL expressions upon exit - BUG/MINOR: stats: fix inversion of the report of a check in progress - MEDIUM: tcp: add explicit support for delayed ACK in connect() - BUG/MEDIUM: connection: always disable polling upon error - MINOR: connection: abort earlier when errors are detected - BUG/MEDIUM: checks: report handshake failures - BUG/MEDIUM: connection: local_send_proxy must wait for connection to establish - MINOR: tcp: add support for the "v6only" bind option - MINOR: stats: also report the computed compression savings in html stats - MINOR: stats: report the total number of compressed responses per front/back - MINOR: tcp: add support for the "v4v6" bind option - DOC: stats: document the comp_rsp stats column - BUILD: buffer: fix another isprint() warning on solaris - MINOR: cli: add support for the "show sess all" command - BUG/MAJOR: cli: show sess <id> may randomly corrupt the back-ref list - MINOR: cli: improve output format for show sess $ptr |
||
Willy Tarreau
|
ad15d127a7 |
[RELEASE] Released version 1.5-dev13
Released version 1.5-dev13 with the following main changes : - BUILD: fix build issue without USE_OPENSSL - BUILD: fix compilation error with DEBUG_FULL - DOC: ssl: remove prefer-server-ciphers documentation - DOC: ssl: surround keywords with quotes - DOC: fix minor typo on http-send-name-header - BUG/MEDIUM: acls using IPv6 subnets patterns incorrectly match IPs - BUG/MAJOR: fix a segfault on option http_proxy and url_ip acl - MEDIUM: http: accept IPv6 values with (s)hdr_ip acl - BUILD: report zlib support in haproxy -vv - DOC: compression: add some details and clean up the formatting - DOC: Change is_ssl acl to ssl_fc acl in example - DOC: make it clear what the HTTP request size is - MINOR: ssl: try to load Diffie-Hellman parameters from cert file - DOC: ssl: update 'crt' statement on 'bind' about Diffie-Hellman parameters loading - MINOR: ssl: add elliptic curve Diffie-Hellman support for ssl key generation - DOC: ssl: add 'ecdhe' statement on 'bind' - MEDIUM: ssl: add client certificate authentication support - DOC: ssl: add 'verify', 'cafile' and 'crlfile' statements on 'bind' - MINOR: ssl: add fetch and ACL 'client_crt' to test a client cert is present - DOC: ssl: add fetch and ACL 'client_cert' - MINOR: ssl: add ignore verify errors options - DOC: ssl: add 'ca-ignore-err' and 'crt-ignore-err' statements on 'bind' - MINOR: ssl: add fetch and ACL 'ssl_verify_result' - DOC: ssl: add fetch and ACL 'ssl_verify_result' - MINOR: ssl: add fetches and ACLs to return verify errors - DOC: ssl: add fetches and ACLs 'ssl_verify_crterr', 'ssl_verify_caerr', and 'ssl_verify_crterr_depth' - MINOR: ssl: disable shared memory and locks on session cache if nbproc == 1 - MINOR: ssl: add build param USE_PRIVATE_CACHE to build cache without shared memory - MINOR: ssl : add statements 'notlsv11' and 'notlsv12' and rename 'notlsv1' to 'notlsv10'. - DOC: ssl : add statements 'notlsv11' and 'notlsv12' and rename 'notlsv1' to 'notlsv10'. - MEDIUM: config: authorize frontend and listen without bind. - MINOR: ssl: add statement 'no-tls-tickets' on bind to disable stateless session resumption - DOC: ssl: add 'no-tls-tickets' statement documentation. - BUG/MINOR: ssl: Fix CRL check was not enabled when crlfile was specified. - BUG/MINOR: build: Fix compilation issue on openssl 0.9.6 due to missing CRL feature. - BUG/MINOR: conf: Fix 'maxsslconn' statement error if built without OPENSSL. - BUG/MINOR: build: Fix failure with USE_OPENSSL=1 and USE_FUTEX=1 on archs i486 and i686. - MINOR: ssl: remove prefer-server-ciphers statement and set it as the default on ssl listeners. - BUG/MEDIUM: ssl: subsequent handshakes fail after server configuration changes - MINOR: ssl: add 'crt-base' and 'ca-base' global statements. - MEDIUM: conf: rename 'nosslv3' and 'notlsvXX' statements 'no-sslv3' and 'no-tlsvXX'. - MEDIUM: conf: rename 'cafile' and 'crlfile' statements 'ca-file' and 'crl-file' - MINOR: ssl: use bit fields to store ssl options instead of one int each - MINOR: ssl: add 'force-sslv3' and 'force-tlsvXX' statements on bind. - MINOR: ssl: add 'force-sslv3' and 'force-tlsvXX' statements on server - MINOR: ssl: add defines LISTEN_DEFAULT_CIPHERS and CONNECT_DEFAULT_CIPHERS. - BUG/MINOR: ssl: Fix issue on server statements 'no-tls*' and 'no-sslv3' - MINOR: ssl: move ssl context init for servers from cfgparse.c to ssl_sock.c - MEDIUM: ssl: reject ssl server keywords in default-server statement - MINOR: ssl: add statement 'no-tls-tickets' on server side. - MINOR: ssl: add statements 'verify', 'ca-file' and 'crl-file' on servers. - DOC: Fix rename of options cafile and crlfile to ca-file and crl-file. - MINOR: sample: manage binary to string type convertion in stick-table and samples. - MINOR: acl: add parse and match primitives to use binary type on ACLs - MINOR: sample: export 'sample_get_trash_chunk(void)' - MINOR: conf: rename all ssl modules fetches using prefix 'ssl_fc' and 'ssl_c' - MINOR: ssl: add pattern and ACLs fetches 'ssl_fc_protocol', 'ssl_fc_cipher', 'ssl_fc_use_keysize' and 'ssl_fc_alg_keysize' - MINOR: ssl: add pattern fetch 'ssl_fc_session_id' - MINOR: ssl: add pattern and ACLs fetches 'ssl_c_version' and 'ssl_f_version' - MINOR: ssl: add pattern and ACLs fetches 'ssl_c_s_dn', 'ssl_c_i_dn', 'ssl_f_s_dn' and 'ssl_c_i_dn' - MINOR: ssl: add pattern and ACLs 'ssl_c_sig_alg' and 'ssl_f_sig_alg' - MINOR: ssl: add pattern and ACLs fetches 'ssl_c_key_alg' and 'ssl_f_key_alg' - MINOR: ssl: add pattern and ACLs fetches 'ssl_c_notbefore', 'ssl_c_notafter', 'ssl_f_notbefore' and 'ssl_f_notafter' - MINOR: ssl: add 'crt' statement on server. - MINOR: ssl: checks the consistency of a private key with the corresponding certificate - BUG/MEDIUM: ssl: review polling on reneg. - BUG/MEDIUM: ssl: Fix some reneg cases not correctly handled. - BUG/MEDIUM: ssl: Fix sometimes reneg fails if requested by server. - MINOR: build: allow packagers to specify the ssl cache size - MINOR: conf: add warning if ssl is not enabled and a certificate is present on bind. - MINOR: ssl: Add tune.ssl.lifetime statement in global. - MINOR: compression: Enable compression for IE6 w/SP2, IE7 and IE8 - BUG: http: revert broken optimisation from |
||
Willy Tarreau
|
3b8e979be4 |
DOC: update readme with build methods for BSD
Suggest use of the GNU Makefile which is more featureful. Also explains how to disable the shared SSL cache. |
||
William Lallemand
|
82fe75c1a7 |
MEDIUM: HTTP compression (zlib library support)
This commit introduces HTTP compression using the zlib library. http_response_forward_body has been modified to call the compression functions. This feature includes 3 algorithms: identity, gzip and deflate: * identity: this is mostly for debugging, and it was useful for developping the compression feature. With Content-Length in input, it is making each chunk with the data available in the current buffer. With chunks in input, it is rechunking, the output chunks will be bigger or smaller depending of the size of the input chunk and the size of the buffer. Identity does not apply any change on data. * gzip: same as identity, but applying a gzip compression. The data are deflated using the Z_NO_FLUSH flag in zlib. When there is no more data in the input buffer, it flushes the data in the output buffer (Z_SYNC_FLUSH). At the end of data, when it receives the last chunk in input, or when there is no more data to read, it writes the end of data with Z_FINISH and the ending chunk. * deflate: same as gzip, but with deflate algorithm and zlib format. Note that this algorithm has ambiguous support on many browsers and no support at all from recent ones. It is strongly recommended not to use it for anything else than experimentation. You can't choose the compression ratio at the moment, it will be set to Z_BEST_SPEED (1), as tests have shown very little benefit in terms of compression ration when going above for HTML contents, at the cost of a massive CPU impact. Compression will be activated depending of the Accept-Encoding request header. With identity, it does not take care of that header. To build HAProxy with zlib support, use USE_ZLIB=1 in the make parameters. This work was initially started by David Du Colombier at Exceliance. |
||
Willy Tarreau
|
d45088107a | DOC: add some info about openssl build in the README | ||
Willy Tarreau
|
7dec965ffe |
BUILD: add an AIX 5.2 (and later) target.
It's always a real pain to build on AIX and I constantly lose my flags, so let's store them once for all in the Makefile. |
||
Willy Tarreau
|
e0c623dbb8 |
BUILD: add support for linux kernels >= 2.6.28
Since all kernels starting from 2.6.28 support both splice() and tproxy, add such a target to simplify the build process. |
||
Willy Tarreau
|
60612ebbbf |
[RELEASE] Released version 1.5-dev7
Released version 1.5-dev7 with the following main changes : - [BUG] fix binary stick-tables - [MINOR] http: *_dom matching header functions now also split on ":" - [BUG] checks: fix support of Mysqld >= 5.5 for mysql-check - [MINOR] acl: add srv_conn acl to count connections on a specific backend server - [MINOR] check: add redis check support - [DOC] small fixes to clearly distinguish between keyword and variables - [MINOR] halog: add support for termination code matching (-tcn/-TCN) - [DOC] Minor spelling fixes and grammatical enhancements - [CLEANUP] dumpstats: make symbols static where possible - [MINOR] Break out dumping table - [MINOR] Break out processing of clear table - [MINOR] Allow listing of stick table by key - [MINOR] Break out all stick table socat command parsing - [MINOR] More flexible clearing of stick table - [MINOR] Allow showing and clearing by key of ipv6 stick tables - [MINOR] Allow showing and clearing by key of integer stick tables - [MINOR] Allow showing and clearing by key of string stick tables - [CLEANUP] Remove assigned but unused variables - [CLEANUP] peers.h: fix declarations - [CLEANUP] session.c: Make functions static where possible - [MINOR] Add active connection list to server - [MINOR] Allow shutdown of sessions when a server becomes unavailable - [MINOR] Add down termination condition - [MINOR] Make appsess{,ion}_refresh static - [MINOR] Add rdp_cookie pattern fetch function - [CLEANUP] Remove unnecessary casts - [MINOR] Add non-stick server option - [MINOR] Consistently use error in tcp_parse_tcp_req() - [MINOR] Consistently free expr on error in cfg_parse_listen() - [MINOR] Free rdp_cookie_name on denint() - [MINOR] Free tcp rules on denint() - [MINOR] Free stick table pool on denint() - [MINOR] Free stick rules on denint() - [MEDIUM] Fix stick-table replication on soft-restart - [MEDIUM] Correct ipmask() logic - [MINOR] Correct type in table dump examples - [MINOR] Fix build error in stream_int_register_handler() - [MINOR] Use DPRINTF in assign_server() - [BUG] checks: http-check expect could fail a check on multi-packet responses - [DOC] fix minor typo in the "dispatch" doc - [BUG] proto_tcp: fix address binding on remote source - [MINOR] http: don't report the "haproxy" word on the monitoring response - [REORG] http: move HTTP error codes back to proto_http.h - [MINOR] http: make the "HTTP 200" status code configurable. - [MINOR] http: partially revert the chunking optimization for now - [MINOR] stream_sock: always clear BF_EXPECT_MORE upon complete transfer - [CLEANUP] stream_sock: remove unneeded FL_TCP and factor out test - [MEDIUM] http: add support for "http-no-delay" - [OPTIM] http: optimize chunking again in non-interactive mode - [OPTIM] stream_sock: avoid fast-forwarding of partial data - [OPTIM] stream_sock: don't use splice on too small payloads - [MINOR] config: make it possible to specify a cookie even without a server - [BUG] stats: support url-encoded forms - [MINOR] config: automatically compute a default fullconn value - [CLEANUP] config: remove some left-over printf debugging code from previous patch - [DOC] add missing entry or stick store-response - [MEDIUM] http: add support for 'cookie' and 'set-cookie' patterns - [BUG] halog: correctly handle truncated last line - [MINOR] halog: make SKIP_CHAR stop on field delimiters - [MINOR] halog: add support for HTTP log matching (-H) - [MINOR] halog: gain back performance before SKIP_CHAR fix - [OPTIM] halog: cache some common fields positions - [OPTIM] halog: check once for correct line format and reuse the pointer - [OPTIM] halog: remove many 'if' by using a function pointer for the filters - [OPTIM] halog: remove support for tab delimiters in input data - [BUG] session: risk of crash on out of memory (1.5-dev regression) - [MINOR] session: try to emit a 500 response on memory allocation errors - [OPTIM] stream_sock: reduce the default number of accepted connections at once - [BUG] stream_sock: disable listener when system resources are exhausted - [MEDIUM] proxy: add a PAUSED state to listeners and move socket tricks out of proxy.c - [BUG] stream_sock: ensure orphan listeners don't accept too many connections - [MINOR] listeners: add listen_full() to mark a listener full - [MINOR] listeners: add support for queueing resource limited listeners - [MEDIUM] listeners: put listeners in queue upon resource shortage - [MEDIUM] listeners: queue proxy-bound listeners at the proxy's - [MEDIUM] listeners: don't stop proxies when global maxconn is reached - [MEDIUM] listeners: don't change listeners states anymore in maintain_proxies - [CLEANUP] proxy: rename a few proxy states (PR_STIDLE and PR_STRUN) - [MINOR] stats: report a "WAITING" state for sockets waiting for resource - [MINOR] proxy: make session rate-limit more accurate - [MINOR] sessions: only wake waiting listeners up if rate limit is OK - [BUG] proxy: peers must only be stopped once, not upon every call to maintain_proxies - [CLEANUP] proxy: merge maintain_proxies() operation inside a single loop - [MINOR] task: new function task_schedule() to schedule a wake up - [MAJOR] proxy: finally get rid of maintain_proxies() - [BUG] proxy: stats frontend and peers were missing many initializers - [MEDIUM] listeners: add a global listener management task - [MINOR] proxy: make findproxy() return proxies from numeric IDs too - [DOC] fix typos, "#" is a sharp, not a dash - [MEDIUM] stats: add support for changing frontend's maxconn at runtime - [MEDIUM] checks: group health checks methods by values and save option bits - [MINOR] session-counters: add the ability to clear the counters - [BUG] check: http-check expect + regex would crash in defaults section - [MEDIUM] http: make x-forwarded-for addition conditional - [REORG] build: move syscall redefinition to specific places - [CLEANUP] update the year in the copyright banner - [BUG] possible crash in 'show table' on stats socket - [BUG] checks: use the correct destination port for sending checks - [BUG] backend: risk of picking a wrong port when mapping is used with crossed families - [MINOR] make use of set_host_port() and get_host_port() to get rid of family mismatches - [DOC] fixed a few "sensible" -> "sensitive" errors - [MINOR] make use of addr_to_str() and get_host_port() to replace many inet_ntop() - [BUG] http: trailing white spaces must also be trimmed after headers - [MINOR] stats: display "<NONE>" instead of the frontend name when unknown - [MINOR] http: take a capture of too large requests and responses - [MINOR] http: take a capture of truncated responses - [MINOR] http: take a capture of bad content-lengths. - [DOC] add a few old and uncommitted docs - [CLEANUP] cfgparse: fix reported options for the "bind" keyword - [MINOR] halog: add -hs/-HS to filter by HTTP status code range - [MINOR] halog: support backslash-escaped quotes - [CLEANUP] remove dirty left-over of a debugging message - [MEDIUM] stats: disable complex socket reservation for stats socket - [CLEANUP] remove a useless test in manage_global_listener_queue() - [MEDIUM] stats: add the "set maxconn" setting to the command line interface - [MEDIUM] add support for global.maxconnrate to limit the per-process conn rate. - [MINOR] stats: report the current and max global connection rates - [MEDIUM] stats: add the ability to adjust the global maxconnrate - [BUG] peers: don't pre-allocate 65000 connections to each peer - [MEDIUM] don't limit peers nor stats socket to maxconn nor maxconnrate - [BUG] peers: the peer frontend must not emit any log - [CLEANUP] proxy: make pause_proxy() perform the required controls and emit the logs - [BUG] peers: don't keep a peers section which has a NULL frontend - [BUG] peers: ensure the peers are resumed if they were paused - [MEDIUM] stats: add the ability to enable/disable/shutdown a frontend at runtime - [MEDIUM] session: make session_shutdown() an independant function - [MEDIUM] stats: offer the possibility to kill a session from the CLI - [CLEANUP] stats: centralize tests for backend/server inputs on the CLI - [MEDIUM] stats: offer the possibility to kill sessions by server - [MINOR] halog: do not consider byte 0x8A as end of line - [MINOR] frontend: ensure debug message length is always initialized - [OPTIM] halog: make fgets parse more bytes by blocks - [OPTIM] halog: add assembly version of the field lookup code - [MEDIUM] poll: add a measurement of idle vs work time - [CLEANUP] startup: report only the basename in the usage message - [MINOR] startup: add an option to change to a new directory - [OPTIM] task: don't scan the run queue if we know it's empty - [BUILD] stats: stdint is not present on solaris - [DOC] update the README file to reflect new naming rules for patches - [MINOR] stats: report the number of requests intercepted by the frontend - [DOC] update ROADMAP file |
||
Willy Tarreau
|
9a639a13cd |
[DOC] update the README file to reflect new naming rules for patches
Those will be in effect after 1.5-dev7 is released. |
||
Willy Tarreau
|
64bc40b654 |
[BUILD] add the USE_GETADDRINFO build option
This one is used to call getaddrinfo() to resolve IPv6 host names. |
||
Willy Tarreau
|
a5899aaad5 |
[BUILD] add the CPU=native and ARCH=32/64 build options
Hank A. Paulson suggested to add CPU=native to optimize the code for the build machine. This makes sense in a lot of situations. Since it is often possible to have both 32 and 64 bits supported on recent systems, the ARCH=32 and ARCH=64 build options were also added. |
||
Willy Tarreau
|
b1a34b68ca |
[DOC] refresh the README file and merge the CONTRIB file into it
Patrick Mézard reported that it was a bit awkward to have the CONTRIB and contrib entries in the source archive since those can conflict on case-insensitive file systems. That made a good opportunity to refresh the README file and to remove that old outdated file. |
||
Willy Tarreau
|
97ec969077 |
[DOC] add some build info about the AIX platform
(cherry picked from commit
|
||
Yitzhak Sapir
|
32087312e3 |
[BUILD] add support for build under Cygwin
After considering various possibilities, we compiled haproxy under cygwin. Attached is an updated full diff that also has the TARGET=cygwin documented. The whole thing compiles and installs with this diff only. In cygwin 1.7 (now in beta), there is apparently support for ipv6. Cygwin 1.5 (later versions, anyway) already includes some support in the form of a define USE_IPV6. When defined, it declares the sockaddr_in6 struct and possibly other things. The above definition AF_INET6=23 is taken from their /usr/include/socket.h file (where it is #if 0'd out). We are running into a socket limit. It appears that Cygwin (running on Windows 2003 Server) will only allow us to set ulimit -n (maximum open files) to 3200, which means we're a little short of 1600 connections. The limit of 3200 is an internal Cygwin limit. Perhaps they can raise it in the future. Using the nbproc option, I was able to bring up 10 servers. It seems to me that they were able to handle over 2000 connections (even though each had maxconn 1500 set, and the hard Cygwin fd limit). |
||
Willy Tarreau
|
ef7341dc3d |
[BUILD] make it possible to pass alternative arch at build time
When trying to build a 32-bit binary on a 64-bit platform, we generally need to pass "-m32" to gcc, which is not convenient with current makefile. Note that this option requires gcc >= 3. In order to ease parameter passing, a new ARCH= makefile option has been added. If it receives a target architecture, according "-m32"/"-m64" and "-march=xxxx" will be passed to gcc. Only the generic makefile has been changed to support this option right now as the need only appeared on Linux. The spec file now makes use of this option so that rpmbuild can automatically build with the proper architecture. |
||
Willy Tarreau
|
83b30c1e3c | [DOC] update the README file with new build options | ||
willy tarreau
|
d38e72d567 | Separated OpenBSD build from the main Makefile into a new one. | ||
willy tarreau
|
783453346f | * added a README to help about the build process |