mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-21 13:16:57 +00:00
MINOR: http: add a small helper to compute how far to rewind to find URI
http_uri_rewind() returns the number of bytes to rewind before buf->p to find the URI. It relies on http_hdr_rewind() to find the beginning and is just here to simplify operations. The purpose is to centralize further ->sov changes aiming at avoiding to rely on buf->o.
This commit is contained in:
parent
211cdece79
commit
da6eed621f
@ -140,6 +140,15 @@ static inline int http_hdr_rewind(const struct http_msg *msg)
|
||||
return msg->chn->buf->o;
|
||||
}
|
||||
|
||||
/* Return the amount of bytes that need to be rewound before buf->p to access
|
||||
* the current message's URI. The purpose is to be able to easily fetch
|
||||
* the message's beginning before headers are forwarded, as well as after.
|
||||
*/
|
||||
static inline int http_uri_rewind(const struct http_msg *msg)
|
||||
{
|
||||
return http_hdr_rewind(msg) - msg->sl.rq.u;
|
||||
}
|
||||
|
||||
/* Return the maximum amount of bytes that may be read after the beginning of
|
||||
* the message body, according to the advertised length. The function is safe
|
||||
* for use between HTTP_MSG_BODY and HTTP_MSG_DATA regardless of whether the
|
||||
|
@ -615,7 +615,7 @@ int assign_server(struct session *s)
|
||||
if (s->txn.req.msg_state < HTTP_MSG_BODY)
|
||||
break;
|
||||
srv = get_server_uh(s->be,
|
||||
b_ptr(s->req->buf, (int)(s->txn.req.sl.rq.u - http_hdr_rewind(&s->txn.req))),
|
||||
b_ptr(s->req->buf, -http_uri_rewind(&s->txn.req)),
|
||||
s->txn.req.sl.rq.u_l);
|
||||
break;
|
||||
|
||||
@ -625,7 +625,7 @@ int assign_server(struct session *s)
|
||||
break;
|
||||
|
||||
srv = get_server_ph(s->be,
|
||||
b_ptr(s->req->buf, (int)(s->txn.req.sl.rq.u - http_hdr_rewind(&s->txn.req))),
|
||||
b_ptr(s->req->buf, -http_uri_rewind(&s->txn.req)),
|
||||
s->txn.req.sl.rq.u_l);
|
||||
|
||||
if (!srv && s->txn.meth == HTTP_METH_POST)
|
||||
|
Loading…
Reference in New Issue
Block a user