haproxy/include/proto
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 MINOR: acl: add parse and match primitives to use binary type on ACLs 2012-10-22 18:54:24 +02:00
arg.h MEDIUM: sample: pass an empty list instead of a null for fetch args 2012-10-19 19:49:09 +02:00
auth.h MAJOR: acl: make use of the new sample struct and get rid of acl_test 2012-05-08 20:57:14 +02:00
backend.h REORG/MAJOR: use "struct channel" instead of "struct buffer" 2012-09-02 21:54:55 +02:00
channel.h OPTIM: channel: inline channel_forward's fast path 2012-10-26 01:08:01 +02:00
checks.h CLEANUP: Make check_statuses, analyze_statuses and process_chk static 2012-03-24 21:54:19 +01:00
compression.h MEDIUM: HTTP compression (zlib library support) 2012-10-26 02:30:48 +02:00
connection.h MEDIUM: connection: add a flag to hold the transport layer 2012-10-12 20:30:50 +02:00
cttproxy.h [MEDIUM] check for cttproxy support when required 2007-03-24 17:24:39 +01:00
dumpstats.h REORG: buffers: split buffers into chunk,buffer,channel 2012-09-03 20:47:32 +02:00
fd.h MEDIUM: fd: add fd_poll_{recv,send} for use when explicit polling is required 2012-09-02 21:53:11 +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
frontend.h REORG: connection: move the PROXY protocol management to connection.c 2012-10-05 00:32:33 +02:00
hdr_idx.h OPTIM/MINOR: move the hdr_idx pools out of the proxy struct 2011-10-24 18:15:04 +02:00
lb_chash.h [MEDIUM] backend: implement consistent hashing variation 2009-10-09 07:17:58 +02:00
lb_fas.h MEDIUM: backend: add the 'first' balancing algorithm 2012-02-21 22:27:27 +01:00
lb_fwlc.h [CLEANUP] backend: move LB algos to individual files 2009-10-01 11:19:37 +02:00
lb_fwrr.h [CLEANUP] backend: move LB algos to individual files 2009-10-01 11:19:37 +02:00
lb_map.h [MINOR] lb_map: reorder code in order to ease integration of new hash functions 2009-10-01 21:11:15 +02:00
listener.h REORG: listener: move unix perms from the listener to the bind_conf 2012-09-20 18:07:14 +02:00
log.h MINOR: log: make lf_text use a const char * 2012-10-12 20:30:51 +02:00
peers.h [CLEANUP] peers.h: fix declarations 2011-06-18 20:27:19 +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 BUILD: http: rename error_message http_error_message to fix conflicts on RHEL 2012-09-04 12:19:04 +02:00
proto_tcp.h MINOR: tcp: replace tcp_src_to_stktable_key with addr_to_stktable_key 2012-09-03 20:47:34 +02:00
proto_uxst.h BUG/MEDIUM: stream_interface: restore get_src/get_dst 2012-05-11 16:48:10 +02:00
protocol.h REORG: split "protocols" files into protocol and listener 2012-09-15 22:29:32 +02:00
proxy.h REORG: split "protocols" files into protocol and listener 2012-09-15 22:29:32 +02:00
queue.h BUG/MEDIUM: zero-weight servers must not dequeue requests from the backend 2012-01-20 16:18:53 +01:00
raw_sock.h REORG: connection: rename the data layer the "transport layer" 2012-10-04 22:26:09 +02:00
sample.h MINOR: sample: export 'sample_get_trash_chunk(void)' 2012-10-22 18:54:24 +02:00
server.h MINOR: server: add minimal infrastructure to parse keywords 2012-10-10 17:42:39 +02:00
session.h CLEANUP: session: remove term_trace which is not used anymore 2012-10-13 11:10:30 +02:00
shctx.h MINOR: ssl: add build param USE_PRIVATE_CACHE to build cache without shared memory 2012-10-02 08:34:38 +02:00
signal.h CLEANUP: includes: fix includes for a number of users of fd.h 2012-09-03 20:49:14 +02:00
ssl_sock.h MEDIUM: log: report SSL ciphers and version in logs using logformat %sslc/%sslv 2012-10-12 20:48:51 +02:00
stick_table.h REORG: use the name "sample" instead of "pattern" to designate extracted data 2012-05-08 20:57:20 +02:00
stream_interface.h MINOR: connection: split conn_prepare() in two functions 2012-10-04 22:26:10 +02:00
task.h [MAJOR] proxy: finally get rid of maintain_proxies() 2011-07-25 16:33:49 +02:00
template.h [CLEANUP] included common/version.h everywhere 2006-06-29 18:54:54 +02:00