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.
diff --git a/include/proto/proto_http.h b/include/proto/proto_http.h
index 6566c0a..aa2c901 100644
--- a/include/proto/proto_http.h
+++ b/include/proto/proto_http.h
@@ -140,6 +140,15 @@
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
diff --git a/src/backend.c b/src/backend.c
index 5a011b1..212e779 100644
--- a/src/backend.c
+++ b/src/backend.c
@@ -615,7 +615,7 @@
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 @@
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)