mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-18 03:26:55 +00:00
MINOR: htx/channel: Add a function to copy an HTX message in a channel's buffer
The channel_htx_copy_msg() function can now be used to copy an HTX message in a channel's buffer. This function takes care to not overwrite existing data. This patch depends on the commit "MINOR: htx: Add a function to append an HTX message to another one". Both are mandatory to fix a bug in http_reply_and_close() function. Be careful to backport both first.
This commit is contained in:
parent
0ea0c86753
commit
7651362e52
@ -935,6 +935,22 @@ static inline int32_t channel_htx_fwd_headers(struct channel *chn, struct htx *h
|
|||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Copy an HTX message stored in the buffer <msg> to the channel's one. We
|
||||||
|
* take care to not overwrite existing data in the channel. All the message is
|
||||||
|
* copied or nothing. It returns 1 on success and 0 on error.
|
||||||
|
*/
|
||||||
|
static inline int channel_htx_copy_msg(struct channel *chn, struct htx *htx, const struct buffer *msg)
|
||||||
|
{
|
||||||
|
/* The channel buffer is empty, we can do a raw copy */
|
||||||
|
if (c_empty(chn)) {
|
||||||
|
chn->buf.data = msg->data;
|
||||||
|
memcpy(chn->buf.area, msg->area, msg->data);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Otherwise, we need to append the HTX message */
|
||||||
|
return htx_append_msg(htx, htxbuf(msg));
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
* Advance the channel buffer's read pointer by <len> bytes. This is useful
|
* Advance the channel buffer's read pointer by <len> bytes. This is useful
|
||||||
* when data have been read directly from the buffer. It is illegal to call
|
* when data have been read directly from the buffer. It is illegal to call
|
||||||
|
Loading…
Reference in New Issue
Block a user