haproxy/include/types
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.
2012-10-26 02:30:48 +02:00
..
acl.h MEDIUM: acl: support IPv6 address matching 2012-05-08 21:28:14 +02:00
arg.h REORG: buffers: split buffers into chunk,buffer,channel 2012-09-03 20:47:32 +02:00
auth.h [REORG] http: move the http-request rules to proto_http 2011-03-13 22:00:24 +01:00
backend.h BUG/MAJOR: checks: don't call set_server_status_* when no LB algo is set 2012-05-19 19:09:46 +02:00
capture.h [MAJOR] last bunch of capture changes for mempool v2 2007-05-13 22:46:04 +02:00
channel.h OPTIM: channel: reorganize struct members to improve cache efficiency 2012-10-13 10:55:22 +02:00
checks.h MINOR: checks: add on-marked-up option 2012-06-03 23:48:42 +02:00
compression.h MEDIUM: HTTP compression (zlib library support) 2012-10-26 02:30:48 +02:00
connection.h OPTIM: connection: pack the struct target 2012-10-13 14:33:58 +02:00
counters.h [MINOR] stats: report the number of requests intercepted by the frontend 2011-09-10 23:32:41 +02:00
fd.h CLEANUP: includes: fix includes for a number of users of fd.h 2012-09-03 20:49:14 +02:00
freq_ctr.h [MINOR] freq_ctr: add new types and functions for periods different from 1s 2010-08-10 14:01:09 +02:00
global.h MINOR: ssl: add defines LISTEN_DEFAULT_CIPHERS and CONNECT_DEFAULT_CIPHERS. 2012-10-05 22:11:15 +02:00
hdr_idx.h [BUG] files were missing for hdr_idx in previous commit 2006-12-04 02:20:02 +01:00
lb_chash.h [MEDIUM] build: switch ebtree users to use new ebtree version 2009-10-26 21:10:04 +01:00
lb_fas.h MEDIUM: backend: add the 'first' balancing algorithm 2012-02-21 22:27:27 +01:00
lb_fwlc.h [MEDIUM] build: switch ebtree users to use new ebtree version 2009-10-26 21:10:04 +01:00
lb_fwrr.h [MEDIUM] build: switch ebtree users to use new ebtree version 2009-10-26 21:10:04 +01:00
lb_map.h [CLEANUP] proxy: move last lb-specific bits to their respective files 2009-10-03 18:41:18 +02:00
listener.h MEDIUM: ssl: add support for the "npn" bind keyword 2012-10-18 19:03:00 +02:00
log.h MEDIUM: log: report SSL ciphers and version in logs using logformat %sslc/%sslv 2012-10-12 20:48:51 +02:00
peers.h REORG: connection: rename the data layer the "transport layer" 2012-10-04 22:26:09 +02:00
pipe.h [MEDIUM] introduce pipe pools 2009-01-25 13:49:53 +01:00
port_range.h [MEDIUM] add support for binding to source port ranges during connect 2009-06-10 12:23:32 +02:00
proto_http.h CLEANUP: http: rename HTTP_MSG_DATA_CRLF state 2012-10-26 01:13:52 +02:00
proto_tcp.h [MINOR] session-counters: use "track-sc{1,2}" instead of "track-{fe,be}-counters" 2010-08-10 18:04:15 +02:00
protocol.h REORG: split "protocols" files into protocol and listener 2012-09-15 22:29:32 +02:00
proxy.h MEDIUM: HTTP compression (zlib library support) 2012-10-26 02:30:48 +02:00
queue.h [MAJOR] ported pendconn to mempools v2 2007-05-13 20:19:55 +02:00
sample.h BUG/MAJOR: ensure that hdr_idx is always reserved when L7 fetches are used 2012-10-05 22:46:09 +02:00
server.h MINOR: ssl: add statements 'verify', 'ca-file' and 'crl-file' on servers. 2012-10-12 12:05:15 +02:00
session.h MEDIUM: HTTP compression (zlib library support) 2012-10-26 02:30:48 +02:00
signal.h [MEDIUM] signals: add support for registering functions and tasks 2010-08-27 18:00:40 +02:00
ssl_sock.h MEDIUM: ssl: add support for SNI and wildcard certificates 2012-09-10 09:27:02 +02:00
stick_table.h [MEDIUM] IPv6 support for stick-tables 2011-03-29 01:09:14 +02:00
stream_interface.h MAJOR: listeners: use dual-linked lists to chain listeners with frontends 2012-09-20 16:48:07 +02:00
task.h [MEDIUM] signals: add support for registering functions and tasks 2010-08-27 18:00:40 +02:00
template.h [CLEANUP] included common/version.h everywhere 2006-06-29 18:54:54 +02:00