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
10-digiumphones
Sean Bright 14 years ago
parent bd26287e88
commit bc9bb55fb2

@ -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));
}

Loading…
Cancel
Save