MINOR: mux_h1/h2: simplify the zero-copy Rx alignment

The transpory layer now respects buffer alignment, so we don't need to
cheat anymore pretending we have some data at the head, adjusting the
buffer's head is enough.
This commit is contained in:
Willy Tarreau 2018-12-14 10:59:15 +01:00
parent e0f24ee149
commit c0960d1185
2 changed files with 2 additions and 17 deletions

View File

@ -1664,7 +1664,6 @@ static int h1_recv(struct h1c *h1c)
max = buf_room_for_htx_data(&h1c->ibuf);
if (max) {
int aligned = 0;
h1c->flags &= ~H1C_F_IN_FULL;
b_realign_if_empty(&h1c->ibuf);
@ -1672,14 +1671,9 @@ static int h1_recv(struct h1c *h1c)
/* try to pre-align the buffer like the rxbufs will be
* to optimize memory copies.
*/
h1c->ibuf.data = sizeof(struct htx);
aligned = 1;
}
ret = conn->xprt->rcv_buf(conn, &h1c->ibuf, max, 0);
if (aligned) {
h1c->ibuf.data -= sizeof(struct htx);
h1c->ibuf.head = sizeof(struct htx);
}
ret = conn->xprt->rcv_buf(conn, &h1c->ibuf, max, 0);
}
if (ret > 0) {
rcvd = 1;

View File

@ -2444,8 +2444,6 @@ static int h2_recv(struct h2c *h2c)
}
do {
int aligned = 0;
b_realign_if_empty(buf);
if (!b_data(buf) && (h2c->proxy->options2 & PR_O2_USE_HTX)) {
/* HTX in use : try to pre-align the buffer like the
@ -2457,9 +2455,7 @@ static int h2_recv(struct h2c *h2c)
* have a few bytes there.
*/
max = buf_room_for_htx_data(buf) + 9;
buf->head = 0;
buf->data = sizeof(struct htx) - 9;
aligned = 1;
buf->head = sizeof(struct htx) - 9;
}
else
max = b_room(buf);
@ -2468,11 +2464,6 @@ static int h2_recv(struct h2c *h2c)
ret = conn->xprt->rcv_buf(conn, buf, max, 0);
else
ret = 0;
if (aligned) {
buf->data -= sizeof(struct htx) - 9;
buf->head = sizeof(struct htx) - 9;
}
} while (ret > 0);
if (h2_recv_allowed(h2c) && (b_data(buf) < buf->size))