mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-05-05 04:56:10 +02: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
@ -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…
x
Reference in New Issue
Block a user