diff --git a/include/common/chunk.h b/include/common/chunk.h
index b9c1d20..a127f9a 100644
--- a/include/common/chunk.h
+++ b/include/common/chunk.h
@@ -25,75 +25,73 @@
 #include <stdlib.h>
 #include <string.h>
 
+#include <common/buf.h>
 #include <common/config.h>
 #include <common/memory.h>
 
 
-/* describes a chunk of string */
-struct chunk {
-	char *area;                 /* points to <size> bytes */
-	size_t size;              /* buffer size in bytes */
-	size_t data;              /* amount of data after head including wrapping */
-};
-
 struct pool_head *pool_head_trash;
 
 /* function prototypes */
 
-int chunk_printf(struct chunk *chk, const char *fmt, ...)
+int chunk_printf(struct buffer *chk, const char *fmt, ...)
 	__attribute__ ((format(printf, 2, 3)));
 
-int chunk_appendf(struct chunk *chk, const char *fmt, ...)
+int chunk_appendf(struct buffer *chk, const char *fmt, ...)
 	__attribute__ ((format(printf, 2, 3)));
 
-int chunk_htmlencode(struct chunk *dst, struct chunk *src);
-int chunk_asciiencode(struct chunk *dst, struct chunk *src, char qc);
-int chunk_strcmp(const struct chunk *chk, const char *str);
-int chunk_strcasecmp(const struct chunk *chk, const char *str);
-struct chunk *get_trash_chunk(void);
-struct chunk *alloc_trash_chunk(void);
+int chunk_htmlencode(struct buffer *dst, struct buffer *src);
+int chunk_asciiencode(struct buffer *dst, struct buffer *src, char qc);
+int chunk_strcmp(const struct buffer *chk, const char *str);
+int chunk_strcasecmp(const struct buffer *chk, const char *str);
+struct buffer *get_trash_chunk(void);
+struct buffer *alloc_trash_chunk(void);
 int init_trash_buffers(int first);
 void deinit_trash_buffers(void);
 
 /*
  * free a trash chunk allocated by alloc_trash_chunk(). NOP on NULL.
  */
-static inline void free_trash_chunk(struct chunk *chunk)
+static inline void free_trash_chunk(struct buffer *chunk)
 {
 	pool_free(pool_head_trash, chunk);
 }
 
 
-static inline void chunk_reset(struct chunk *chk)
+static inline void chunk_reset(struct buffer *chk)
 {
 	chk->data  = 0;
 }
 
-static inline void chunk_init(struct chunk *chk, char *str, size_t size)
+static inline void chunk_init(struct buffer *chk, char *str, size_t size)
 {
-	chk->area  = str;
-	chk->data  = 0;
+	chk->area = str;
+	chk->head = 0;
+	chk->data = 0;
 	chk->size = size;
 }
 
 /* report 0 in case of error, 1 if OK. */
-static inline int chunk_initlen(struct chunk *chk, char *str, size_t size, int len)
+static inline int chunk_initlen(struct buffer *chk, char *str, size_t size,
+				int len)
 {
 
 	if (len < 0 || (size && len > size))
 		return 0;
 
-	chk->area  = str;
-	chk->data  = len;
+	chk->area = str;
+	chk->head = 0;
+	chk->data = len;
 	chk->size = size;
 
 	return 1;
 }
 
 /* this is only for temporary manipulation, the chunk is read-only */
-static inline void chunk_initstr(struct chunk *chk, const char *str)
+static inline void chunk_initstr(struct buffer *chk, const char *str)
 {
 	chk->area = (char *)str;
+	chk->head = 0;
 	chk->data = strlen(str);
 	chk->size = 0;			/* mark it read-only */
 }
@@ -101,7 +99,8 @@
 /* copies memory area <src> into <chk> for <len> bytes. Returns 0 in
  * case of failure. No trailing zero is added.
  */
-static inline int chunk_memcpy(struct chunk *chk, const char *src, size_t len)
+static inline int chunk_memcpy(struct buffer *chk, const char *src,
+			       size_t len)
 {
 	if (unlikely(len >= chk->size))
 		return 0;
@@ -115,7 +114,8 @@
 /* appends memory area <src> after <chk> for <len> bytes. Returns 0 in
  * case of failure. No trailing zero is added.
  */
-static inline int chunk_memcat(struct chunk *chk, const char *src, size_t len)
+static inline int chunk_memcat(struct buffer *chk, const char *src,
+			       size_t len)
 {
 	if (unlikely(chk->data < 0 || chk->data + len >= chk->size))
 		return 0;
@@ -128,7 +128,7 @@
 /* copies str into <chk> followed by a trailing zero. Returns 0 in
  * case of failure.
  */
-static inline int chunk_strcpy(struct chunk *chk, const char *str)
+static inline int chunk_strcpy(struct buffer *chk, const char *str)
 {
 	size_t len;
 
@@ -146,7 +146,7 @@
 /* appends str after <chk> followed by a trailing zero. Returns 0 in
  * case of failure.
  */
-static inline int chunk_strcat(struct chunk *chk, const char *str)
+static inline int chunk_strcat(struct buffer *chk, const char *str)
 {
 	size_t len;
 
@@ -163,7 +163,7 @@
 /* appends <nb> characters from str after <chk>.
  * Returns 0 in case of failure.
  */
-static inline int chunk_strncat(struct chunk *chk, const char *str, int nb)
+static inline int chunk_strncat(struct buffer *chk, const char *str, int nb)
 {
 	if (unlikely(chk->data < 0 || chk->data + nb >= chk->size))
 		return 0;
@@ -185,7 +185,7 @@
  *   chunk_appendf(&trash, "%s", gethosname());
  *   printf("hostname=<%s>, pid=<%d>\n", name, pid);
  */
-static inline char *chunk_newstr(struct chunk *chk)
+static inline char *chunk_newstr(struct buffer *chk)
 {
 	if (chk->data < 0 || chk->data + 1 >= chk->size)
 		return NULL;
@@ -194,14 +194,14 @@
 	return chk->area + chk->data;
 }
 
-static inline void chunk_drop(struct chunk *chk)
+static inline void chunk_drop(struct buffer *chk)
 {
 	chk->area  = NULL;
 	chk->data  = -1;
 	chk->size = 0;
 }
 
-static inline void chunk_destroy(struct chunk *chk)
+static inline void chunk_destroy(struct buffer *chk)
 {
 	if (!chk->size)
 		return;
@@ -217,13 +217,14 @@
  * the destination string is returned, or NULL if the allocation fails or if
  * any pointer is NULL.
  */
-static inline char *chunk_dup(struct chunk *dst, const struct chunk *src)
+static inline char *chunk_dup(struct buffer *dst, const struct buffer *src)
 {
 	if (!dst || !src || src->data < 0 || !src->area)
 		return NULL;
 
 	if (dst->size)
 		free(dst->area);
+	dst->head = src->head;
 	dst->data = src->data;
 	dst->size = src->data;
 	if (dst->size < src->size || !src->size)
@@ -231,6 +232,7 @@
 
 	dst->area = (char *)malloc(dst->size);
 	if (!dst->area) {
+		dst->head = 0;
 		dst->data = 0;
 		dst->size = 0;
 		return NULL;
diff --git a/include/common/hpack-dec.h b/include/common/hpack-dec.h
index b03398a..71039d3 100644
--- a/include/common/hpack-dec.h
+++ b/include/common/hpack-dec.h
@@ -34,6 +34,7 @@
 #include <common/hpack-tbl.h>
 
 int hpack_decode_frame(struct hpack_dht *dht, const uint8_t *raw, uint32_t len,
-                       struct http_hdr *list, int list_size, struct chunk *tmp);
+                       struct http_hdr *list, int list_size,
+                       struct buffer *tmp);
 
 #endif /* _COMMON_HPACK_DEC_H */
diff --git a/include/common/hpack-enc.h b/include/common/hpack-enc.h
index 0a44dfc..5246b83 100644
--- a/include/common/hpack-enc.h
+++ b/include/common/hpack-enc.h
@@ -33,6 +33,7 @@
 #include <common/config.h>
 #include <common/ist.h>
 
-int hpack_encode_header(struct chunk *out, const struct ist n, const struct ist v);
+int hpack_encode_header(struct buffer *out, const struct ist n,
+			const struct ist v);
 
 #endif /* _COMMON_HPACK_ENC_H */
diff --git a/include/common/standard.h b/include/common/standard.h
index 6542759..0a956e0 100644
--- a/include/common/standard.h
+++ b/include/common/standard.h
@@ -486,7 +486,7 @@
  */
 char *encode_chunk(char *start, char *stop,
                    const char escape, const fd_set *map,
-                   const struct chunk *chunk);
+                   const struct buffer *chunk);
 
 /*
  * Tries to prefix characters tagged in the <map> with the <escape>
@@ -509,7 +509,7 @@
  */
 char *escape_chunk(char *start, char *stop,
                    const char escape, const fd_set *map,
-                   const struct chunk *chunk);
+                   const struct buffer *chunk);
 
 
 /* Check a string for using it in a CSV output format. If the string contains
@@ -539,10 +539,11 @@
  * This function appends the encoding to the existing output chunk. Please
  * use csv_enc() instead if you want to replace the output chunk.
  */
-const char *csv_enc_append(const char *str, int quote, struct chunk *output);
+const char *csv_enc_append(const char *str, int quote, struct buffer *output);
 
 /* same as above but the output chunk is reset first */
-static inline const char *csv_enc(const char *str, int quote, struct chunk *output)
+static inline const char *csv_enc(const char *str, int quote,
+				  struct buffer *output)
 {
 	chunk_reset(output);
 	return csv_enc_append(str, quote, output);
@@ -1317,9 +1318,9 @@
 struct list;
 int list_append_word(struct list *li, const char *str, char **err);
 
-int dump_text(struct chunk *out, const char *buf, int bsize);
-int dump_binary(struct chunk *out, const char *buf, int bsize);
-int dump_text_line(struct chunk *out, const char *buf, int bsize, int len,
+int dump_text(struct buffer *out, const char *buf, int bsize);
+int dump_binary(struct buffer *out, const char *buf, int bsize);
+int dump_text_line(struct buffer *out, const char *buf, int bsize, int len,
                    int *line, int ptr);
 
 /* same as realloc() except that ptr is also freed upon failure */
diff --git a/include/proto/action.h b/include/proto/action.h
index dcfdeac..19312db 100644
--- a/include/proto/action.h
+++ b/include/proto/action.h
@@ -44,7 +44,8 @@
 	return NULL;
 }
 
-static inline void action_build_list(struct list *keywords, struct chunk *chk)
+static inline void action_build_list(struct list *keywords,
+				     struct buffer *chk)
 {
 	struct action_kw_list *kw_list;
 	int i;
diff --git a/include/proto/channel.h b/include/proto/channel.h
index 10e3602..5a1a36e 100644
--- a/include/proto/channel.h
+++ b/include/proto/channel.h
@@ -784,7 +784,7 @@
  * Channel flag READ_PARTIAL is updated if some data can be transferred. The
  * chunk's length is updated with the number of bytes sent.
  */
-static inline int ci_putchk(struct channel *chn, struct chunk *chunk)
+static inline int ci_putchk(struct channel *chn, struct buffer *chunk)
 {
 	int ret;
 
diff --git a/include/proto/filters.h b/include/proto/filters.h
index 1be1637..d16f706 100644
--- a/include/proto/filters.h
+++ b/include/proto/filters.h
@@ -111,7 +111,7 @@
 int  flt_http_forward_data(struct stream *s, struct http_msg *msg, unsigned int len);
 
 void flt_http_reset(struct stream *s, struct http_msg *msg);
-void flt_http_reply(struct stream *s, short status, const struct chunk *msg);
+void flt_http_reply(struct stream *s, short status, const struct buffer *msg);
 
 int  flt_start_analyze(struct stream *s, struct channel *chn, unsigned int an_bit);
 int  flt_pre_analyze(struct stream *s, struct channel *chn, unsigned int an_bit);
diff --git a/include/proto/proto_http.h b/include/proto/proto_http.h
index d3b1f43..49cb501 100644
--- a/include/proto/proto_http.h
+++ b/include/proto/proto_http.h
@@ -45,7 +45,7 @@
  */
 
 extern const int http_err_codes[HTTP_ERR_SIZE];
-extern struct chunk http_err_chunks[HTTP_ERR_SIZE];
+extern struct buffer http_err_chunks[HTTP_ERR_SIZE];
 extern const char *HTTP_302;
 extern const char *HTTP_303;
 
@@ -119,8 +119,8 @@
 struct act_rule *parse_http_res_cond(const char **args, const char *file, int linenum, struct proxy *proxy);
 void free_http_req_rules(struct list *r);
 void free_http_res_rules(struct list *r);
-void http_reply_and_close(struct stream *s, short status, struct chunk *msg);
-struct chunk *http_error_message(struct stream *s);
+void http_reply_and_close(struct stream *s, short status, struct buffer *msg);
+struct buffer *http_error_message(struct stream *s);
 struct redirect_rule *http_parse_redirect_rule(const char *file, int linenum, struct proxy *curproxy,
                                                const char **args, char **errmsg, int use_fmt, int dir);
 int smp_fetch_cookie(const struct arg *args, struct sample *smp, const char *kw, void *private);
diff --git a/include/proto/server.h b/include/proto/server.h
index 14f4926..3378c2b 100644
--- a/include/proto/server.h
+++ b/include/proto/server.h
@@ -150,7 +150,8 @@
  */
 void srv_shutdown_backup_streams(struct proxy *px, int why);
 
-void srv_append_status(struct chunk *msg, struct server *s, struct check *, int xferred, int forced);
+void srv_append_status(struct buffer *msg, struct server *s, struct check *,
+		       int xferred, int forced);
 
 void srv_set_stopped(struct server *s, const char *reason, struct check *check);
 void srv_set_running(struct server *s, const char *reason, struct check *check);
diff --git a/include/proto/spoe.h b/include/proto/spoe.h
index 299836b..b6c4ee2 100644
--- a/include/proto/spoe.h
+++ b/include/proto/spoe.h
@@ -164,7 +164,7 @@
 
 		case SMP_T_STR:
 		case SMP_T_BIN: {
-			struct chunk *chk = &smp->data.u.str;
+			struct buffer *chk = &smp->data.u.str;
 
 			/* Here, we need to know if the sample has already been
 			 * partially encoded. If yes, we only need to encode the
@@ -175,7 +175,7 @@
 				 * type (string or binary), the buffer length
 				 * (as a varint) and at least 1 byte of the
 				 * buffer. */
-				struct chunk *chk = &smp->data.u.str;
+				struct buffer *chk = &smp->data.u.str;
 
 				*p++ = (smp->data.type == SMP_T_STR)
 					? SPOE_DATA_T_STR
diff --git a/include/proto/ssl_sock.h b/include/proto/ssl_sock.h
index c6075eb..f04317a 100644
--- a/include/proto/ssl_sock.h
+++ b/include/proto/ssl_sock.h
@@ -57,15 +57,17 @@
 void ssl_sock_set_servername(struct connection *conn, const char *hostname);
 int ssl_sock_get_cert_used_sess(struct connection *conn);
 int ssl_sock_get_cert_used_conn(struct connection *conn);
-int ssl_sock_get_remote_common_name(struct connection *conn, struct chunk *out);
-int ssl_sock_get_pkey_algo(struct connection *conn, struct chunk *out);
+int ssl_sock_get_remote_common_name(struct connection *conn,
+				    struct buffer *out);
+int ssl_sock_get_pkey_algo(struct connection *conn, struct buffer *out);
 unsigned int ssl_sock_get_verify_result(struct connection *conn);
 #if (defined SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB && !defined OPENSSL_NO_OCSP)
-int ssl_sock_update_ocsp_response(struct chunk *ocsp_response, char **err);
+int ssl_sock_update_ocsp_response(struct buffer *ocsp_response, char **err);
 #endif
 #if (defined SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB && TLS_TICKETS_NO > 0)
-void ssl_sock_update_tlskey_ref(struct tls_keys_ref *ref, struct chunk *tlskey);
-int ssl_sock_update_tlskey(char *filename, struct chunk *tlskey, char **err);
+void ssl_sock_update_tlskey_ref(struct tls_keys_ref *ref,
+				struct buffer *tlskey);
+int ssl_sock_update_tlskey(char *filename, struct buffer *tlskey, char **err);
 struct tls_keys_ref *tlskeys_ref_lookup(const char *filename);
 struct tls_keys_ref *tlskeys_ref_lookupid(int unique_id);
 #endif
diff --git a/include/proto/stats.h b/include/proto/stats.h
index ac893b8..02a3506 100644
--- a/include/proto/stats.h
+++ b/include/proto/stats.h
@@ -101,9 +101,10 @@
 extern struct applet http_stats_applet;
 
 void stats_io_handler(struct stream_interface *si);
-int stats_emit_raw_data_field(struct chunk *out, const struct field *f);
-int stats_emit_typed_data_field(struct chunk *out, const struct field *f);
-int stats_emit_field_tags(struct chunk *out, const struct field *f, char delim);
+int stats_emit_raw_data_field(struct buffer *out, const struct field *f);
+int stats_emit_typed_data_field(struct buffer *out, const struct field *f);
+int stats_emit_field_tags(struct buffer *out, const struct field *f,
+			  char delim);
 
 #endif /* _PROTO_STATS_H */
 
diff --git a/include/proto/stream_interface.h b/include/proto/stream_interface.h
index 03756ba..7fcd4c8 100644
--- a/include/proto/stream_interface.h
+++ b/include/proto/stream_interface.h
@@ -36,7 +36,8 @@
 /* main event functions used to move data between sockets and buffers */
 int stream_int_check_timeouts(struct stream_interface *si);
 void stream_int_report_error(struct stream_interface *si);
-void stream_int_retnclose(struct stream_interface *si, const struct chunk *msg);
+void stream_int_retnclose(struct stream_interface *si,
+			  const struct buffer *msg);
 int conn_si_send_proxy(struct connection *conn, unsigned int flag);
 void stream_sock_read0(struct stream_interface *si);
 
diff --git a/include/types/applet.h b/include/types/applet.h
index 8b7c28f..d4172bd 100644
--- a/include/types/applet.h
+++ b/include/types/applet.h
@@ -57,7 +57,7 @@
 	unsigned short state;      /* Internal appctx state */
 	unsigned int st0;          /* CLI state for stats, session state for peers */
 	unsigned int st1;          /* prompt/payload (bitwise OR of APPCTX_CLI_ST1_*) for stats, session error for peers */
-	struct chunk *chunk;       /* used to store unfinished commands */
+	struct buffer *chunk;       /* used to store unfinished commands */
 	unsigned int st2;          /* output state for stats, unused by peers  */
 	struct applet *applet;     /* applet this context refers to */
 	void *owner;               /* pointer to upper layer's entity (eg: stream interface) */
@@ -150,7 +150,7 @@
 			struct pat_ref *ref;
 			struct bref bref;	/* back-reference from the pat_ref_elt being dumped */
 			struct pattern_expr *expr;
-			struct chunk chunk;
+			struct buffer chunk;
 		} map;
 		struct {
 			struct hlua *hlua;
diff --git a/include/types/arg.h b/include/types/arg.h
index c3b09de..96974ba 100644
--- a/include/types/arg.h
+++ b/include/types/arg.h
@@ -92,7 +92,7 @@
 
 union arg_data {
 	long long int sint;
-	struct chunk str;
+	struct buffer str;
 	struct in_addr ipv4;
 	struct in6_addr ipv6;
 	struct proxy *prx; /* used for fe, be, tables */
diff --git a/include/types/connection.h b/include/types/connection.h
index 624e01e..ad406ac 100644
--- a/include/types/connection.h
+++ b/include/types/connection.h
@@ -311,7 +311,7 @@
 
 	struct conn_stream *(*attach)(struct connection *); /* Create and attach a conn_stream to an outgoing connection */
 	void (*detach)(struct conn_stream *); /* Detach a conn_stream from an outgoing connection, when the request is done */
-	void (*show_fd)(struct chunk *, struct connection *); /* append some data about connection into chunk for "show fd" */
+	void (*show_fd)(struct buffer *, struct connection *); /* append some data about connection into chunk for "show fd" */
 	unsigned int flags;                           /* some flags characterizing the mux's capabilities (MX_FL_*) */
 	char name[8];                                 /* mux layer name, zero-terminated */
 };
diff --git a/include/types/filters.h b/include/types/filters.h
index 488a97f..714cee9 100644
--- a/include/types/filters.h
+++ b/include/types/filters.h
@@ -189,7 +189,7 @@
 
 	void (*http_reset)         (struct stream *s, struct filter *f, struct http_msg *msg);
 	void (*http_reply)         (struct stream *s, struct filter *f, short status,
-				    const struct chunk *msg);
+				    const struct buffer *msg);
 
 	/*
 	 * TCP callbacks
diff --git a/include/types/global.h b/include/types/global.h
index 2ab124b..a684ea6 100644
--- a/include/types/global.h
+++ b/include/types/global.h
@@ -127,7 +127,7 @@
 	char *chroot;
 	char *pidfile;
 	char *node, *desc;		/* node name & description */
-	struct chunk log_tag;           /* name for syslog */
+	struct buffer log_tag;           /* name for syslog */
 	struct list logsrvs;
 	char *log_send_hostname;   /* set hostname in syslog header */
 	char *server_state_base;   /* path to a directory where server state files can be found */
@@ -207,7 +207,7 @@
 extern int  actconn;            /* # of active sessions */
 extern int  listeners;
 extern int  jobs;               /* # of active jobs (listeners, sessions, open devices) */
-extern THREAD_LOCAL struct chunk trash;
+extern THREAD_LOCAL struct buffer trash;
 extern int nb_oldpids;          /* contains the number of old pids found */
 extern const int zero;
 extern const int one;
diff --git a/include/types/proto_http.h b/include/types/proto_http.h
index 5a6cc93..9c39056 100644
--- a/include/types/proto_http.h
+++ b/include/types/proto_http.h
@@ -301,7 +301,7 @@
 struct http_auth_data {
 	enum ht_auth_m method;                /* one of HTTP_AUTH_* */
 	/* 7 bytes unused here */
-	struct chunk method_data;             /* points to the creditial part from 'Authorization:' header */
+	struct buffer method_data;             /* points to the creditial part from 'Authorization:' header */
 	char *user, *pass;                    /* extracted username & password */
 };
 
diff --git a/include/types/proxy.h b/include/types/proxy.h
index 16c13a1..ec95286 100644
--- a/include/types/proxy.h
+++ b/include/types/proxy.h
@@ -356,7 +356,7 @@
 	struct list logsrvs;
 	struct list logformat; 			/* log_format linked list */
 	struct list logformat_sd;		/* log_format linked list for the RFC5424 structured-data part */
-	struct chunk log_tag;                   /* override default syslog tag */
+	struct buffer log_tag;                   /* override default syslog tag */
 	char *header_unique_id; 		/* unique-id header */
 	struct list format_unique_id;		/* unique-id format */
 	int to_log;				/* things to be logged (LW_*) */
@@ -384,7 +384,7 @@
 	char *check_path;			/* PATH environment to use for external agent checks */
 	char *expect_str;			/* http-check expected content : string or text version of the regex */
 	struct my_regex *expect_regex;		/* http-check expected content */
-	struct chunk errmsg[HTTP_ERR_SIZE];	/* default or customized error messages for known errors */
+	struct buffer errmsg[HTTP_ERR_SIZE];	/* default or customized error messages for known errors */
 	int uuid;				/* universally unique proxy ID, used for SNMP */
 	unsigned int backlog;			/* force the frontend's listen backlog */
 	unsigned long bind_proc;		/* bitmask of processes using this proxy */
diff --git a/include/types/sample.h b/include/types/sample.h
index cf0528e..987a099 100644
--- a/include/types/sample.h
+++ b/include/types/sample.h
@@ -244,14 +244,14 @@
  */
 struct meth {
 	enum http_meth_t meth;
-	struct chunk str;
+	struct buffer str;
 };
 
 union sample_value {
 	long long int   sint;  /* used for signed 64bits integers */
 	struct in_addr  ipv4;  /* used for ipv4 addresses */
 	struct in6_addr ipv6;  /* used for ipv6 addresses */
-	struct chunk    str;   /* used for char strings or buffers */
+	struct buffer    str;   /* used for char strings or buffers */
 	struct meth     meth;  /* used for http method */
 };
 
