mirror of
https://github.com/haproxy/haproxy.git
synced 2026-04-21 06:06:59 -04:00
BUG/MINOR: http_htx: Support empty errorfiles
Empty error files may be used to disable the sending of any message for specific error codes. A common use-case is to use the file "/dev/null". This way the default error message is overridden and no message is returned to the client. It was supported in the legacy HTTP mode, but not in HTX. Because of a bug, such messages triggered an error. This patch must be backported to 2.0 and 1.9. However, the patch will have to be adapted.
This commit is contained in:
parent
9f5839cde2
commit
90cc4811be
2 changed files with 11 additions and 5 deletions
|
|
@ -47,6 +47,6 @@ unsigned int http_get_htx_hdr(const struct htx *htx, const struct ist hdr,
|
|||
int occ, struct http_hdr_ctx *ctx, char **vptr, size_t *vlen);
|
||||
unsigned int http_get_htx_fhdr(const struct htx *htx, const struct ist hdr,
|
||||
int occ, struct http_hdr_ctx *ctx, char **vptr, size_t *vlen);
|
||||
struct htx *http_str_to_htx(struct buffer *buf, struct ist raw);
|
||||
int http_str_to_htx(struct buffer *buf, struct ist raw);
|
||||
|
||||
#endif /* _PROTO_HTTP_HTX_H */
|
||||
|
|
|
|||
|
|
@ -600,7 +600,7 @@ unsigned int http_get_htx_fhdr(const struct htx *htx, const struct ist hdr,
|
|||
return 1;
|
||||
}
|
||||
|
||||
struct htx *http_str_to_htx(struct buffer *buf, struct ist raw)
|
||||
int http_str_to_htx(struct buffer *buf, struct ist raw)
|
||||
{
|
||||
struct htx *htx;
|
||||
struct htx_sl *sl;
|
||||
|
|
@ -610,11 +610,17 @@ struct htx *http_str_to_htx(struct buffer *buf, struct ist raw)
|
|||
unsigned int flags = HTX_SL_F_IS_RESP;
|
||||
int ret = 0;
|
||||
|
||||
b_reset(buf);
|
||||
if (!raw.len) {
|
||||
buf->size = 0;
|
||||
buf->area = malloc(raw.len);
|
||||
return 1;
|
||||
}
|
||||
|
||||
buf->size = global.tune.bufsize;
|
||||
buf->area = (char *)malloc(buf->size);
|
||||
if (!buf->area)
|
||||
goto error;
|
||||
b_reset(buf);
|
||||
|
||||
h1m_init_res(&h1m);
|
||||
h1m.flags |= H1_MF_NO_PHDR;
|
||||
|
|
@ -663,12 +669,12 @@ struct htx *http_str_to_htx(struct buffer *buf, struct ist raw)
|
|||
if (!htx_add_endof(htx, HTX_BLK_EOM))
|
||||
goto error;
|
||||
|
||||
return htx;
|
||||
return 1;
|
||||
|
||||
error:
|
||||
if (buf->size)
|
||||
free(buf->area);
|
||||
return NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int http_htx_init(void)
|
||||
|
|
|
|||
Loading…
Reference in a new issue