When AMI receives a line that is 1025 bytes long, it sends two error
messages. Copy the last byte in the buffer to the first postiion,
set the length to 1.
ASTERISK-20524 #close
Reported by: David M. Lee
Change-Id: Ifda403e2713b59582c715229814fd64a0733c5ea
return 1;
}
if (s->session->inlen >= maxlen) {
- /* no crlf found, and buffer full - sorry, too long for us */
+ /* no crlf found, and buffer full - sorry, too long for us
+ * keep the last character in case we are in the middle of a CRLF. */
ast_log(LOG_WARNING, "Discarding message from %s. Line too long: %.25s...\n", ast_sockaddr_stringify_addr(&s->session->addr), src);
- s->session->inlen = 0;
+ src[0] = src[s->session->inlen - 1];
+ s->session->inlen = 1;
s->parsing = MESSAGE_LINE_TOO_LONG;
}
res = 0;