mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-03-01 17:10:42 +00:00
BUG/MEDIUM: cli: handle correctly prefix and payload
In the master CLI, the commands and the prefix were still parsed and trimmed after the pattern payload. Don't parse anything but the end of a line till we are in payload mode. Put the search of the pattern after the trim so we can use correctly a payload with a command which is prefixed by @.
This commit is contained in:
parent
b7ea141cbb
commit
3301f3e5cd
22
src/cli.c
22
src/cli.c
@ -1933,16 +1933,9 @@ int pcli_parse_request(struct stream *s, struct channel *req, char **errmsg, int
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* last line of the payload */
|
||||
if ((s->pcli_flags & PCLI_F_PAYLOAD) && (reql == 1)) {
|
||||
s->pcli_flags &= ~PCLI_F_PAYLOAD;
|
||||
return reql;
|
||||
}
|
||||
|
||||
payload = strstr(p, PAYLOAD_PATTERN);
|
||||
if ((end - 1) == (payload + strlen(PAYLOAD_PATTERN))) {
|
||||
/* if the payload pattern is at the end */
|
||||
s->pcli_flags |= PCLI_F_PAYLOAD;
|
||||
if (s->pcli_flags & PCLI_F_PAYLOAD) {
|
||||
if (reql == 1) /* last line of the payload */
|
||||
s->pcli_flags &= ~PCLI_F_PAYLOAD;
|
||||
return reql;
|
||||
}
|
||||
|
||||
@ -1986,12 +1979,19 @@ int pcli_parse_request(struct stream *s, struct channel *req, char **errmsg, int
|
||||
/* End of words are ending by \0, we need to replace the \0s by spaces
|
||||
1 before forwarding them */
|
||||
p = str;
|
||||
while (p < end) {
|
||||
while (p < end-1) {
|
||||
if (*p == '\0')
|
||||
*p = ' ';
|
||||
p++;
|
||||
}
|
||||
|
||||
payload = strstr(str, PAYLOAD_PATTERN);
|
||||
if ((end - 1) == (payload + strlen(PAYLOAD_PATTERN))) {
|
||||
/* if the payload pattern is at the end */
|
||||
s->pcli_flags |= PCLI_F_PAYLOAD;
|
||||
ret = reql;
|
||||
}
|
||||
|
||||
*(end-1) = '\n';
|
||||
|
||||
if (wtrim > 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user