mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +00:00
Merged revisions 302549 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8 ................ r302549 | seanbright | 2011-01-19 13:43:11 -0500 (Wed, 19 Jan 2011) | 17 lines Merged revisions 302548 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.6.2 ........ r302548 | seanbright | 2011-01-19 13:37:09 -0500 (Wed, 19 Jan 2011) | 10 lines Properly handle partial reads from fgets() when handling AGIs. When fgets() failed with EAGAIN, we were continually decrementing the available space left in our buffer, resulting in botched command handling. (closes issue #16032) Reported by: notahat Patches: agi_buffer_patch2.diff uploaded by fnordian (license 110) ........ ................ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@302550 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -3391,7 +3391,7 @@ static enum agi_result run_agi(struct ast_channel *chan, char *request, AGI *agi
|
||||
retry = AGI_NANDFS_RETRY;
|
||||
buf[0] = '\0';
|
||||
|
||||
while (buflen < (len - 1)) {
|
||||
while (len > 1) {
|
||||
res = fgets(buf + buflen, len, readf);
|
||||
if (feof(readf))
|
||||
break;
|
||||
@@ -3402,7 +3402,7 @@ static enum agi_result run_agi(struct ast_channel *chan, char *request, AGI *agi
|
||||
buflen = strlen(buf);
|
||||
if (buflen && buf[buflen - 1] == '\n')
|
||||
break;
|
||||
len -= buflen;
|
||||
len = sizeof(buf) - buflen;
|
||||
if (agidebug)
|
||||
ast_verbose( "AGI Rx << temp buffer %s - errno %s\n", buf, strerror(errno));
|
||||
}
|
||||
|
Reference in New Issue
Block a user