struct htx_sl *sl;
struct ist meth, uri, vsn;
unsigned int flags = 0;
+ int lenient;
/* <h1sl> is always defined for a request */
meth = h1sl->rq.m;
* corresponding flags must be preserved for the next parsing.
*/
flags = h1m->flags & (H1_MF_CONN_CLO|H1_MF_CONN_KAL);
+ lenient = (h1m->err_pos >= -1);
h1m_init_req(h1m);
h1m->flags |= (H1_MF_NO_PHDR|H1_MF_CLEAN_CONN_HDR|flags);
+ if (lenient)
+ h1m->err_pos = -1; /* keep accepting unsafe violations */
return -2;
error:
h1m->err_pos = h1m->next;
struct ist vsn, status, reason;
unsigned int flags = 0;
uint16_t code = 0;
+ int lenient;
if (h1sl) {
/* For HTTP responses, the start-line was parsed */
* corresponding flags must be preserved for the next parsing.
*/
flags = h1m->flags & (H1_MF_CONN_CLO|H1_MF_CONN_KAL);
+ lenient = (h1m->err_pos >= -1);
h1m_init_res(h1m);
h1m->flags |= (H1_MF_NO_PHDR|H1_MF_CLEAN_CONN_HDR|flags);
+ if (lenient)
+ h1m->err_pos = -1; /* keep accepting unsafe violations */
return -2;
error:
h1m->err_pos = h1m->next;
h1s->status < 200 && (h1s->status == 100 || h1s->status >= 102)) {
h1m_init_res(&h1s->res);
h1m->flags |= (H1_MF_NO_PHDR|H1_MF_CLEAN_CONN_HDR);
+ if (h1c->px->options2 & PR_O2_RSPBUG_OK)
+ h1m->err_pos = -1;
TRACE_STATE("1xx response rcvd", H1_EV_RX_DATA|H1_EV_RX_HDRS, h1c->conn, h1s);
}
}