Merged revisions 203785 via svnmerge from
authorRussell Bryant <russell@russellbryant.com>
Fri, 26 Jun 2009 21:21:48 +0000 (21:21 +0000)
committerRussell Bryant <russell@russellbryant.com>
Fri, 26 Jun 2009 21:21:48 +0000 (21:21 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
  r203785 | russell | 2009-06-26 16:16:39 -0500 (Fri, 26 Jun 2009) | 15 lines

  Don't fast forward past the end of a message.

  This is nice change for users of the voicemail application.  If someone gets a
  little carried away with fast forwarding through a message, they can easily
  get to the end and accidentally exit the voicemail application by hitting the
  fast forward key during the following prompt.

  This adds some safety by not allowing a fast forward past the end of a message.

  (closes issue #14554)
  Reported by: lacoursj
  Patches:
        21761.patch uploaded by lacoursj (license 707)
  Tested by: lacoursj
........

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@203802 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/file.c

index ca70703..c89cee9 100644 (file)
@@ -1227,7 +1227,14 @@ static int waitstream_core(struct ast_channel *c, const char *breakon,
                                } else {
                                        res = fr->subclass;
                                        if (strchr(forward, res)) {
+                                               int eoftest;
                                                ast_stream_fastforward(c->stream, skip_ms);
+                                               eoftest = fgetc(c->stream->f);
+                                               if (feof(c->stream->f)) {
+                                                       ast_stream_rewind(c->stream, skip_ms);
+                                               } else {
+                                                       ungetc(eoftest, c->stream->f);
+                                               }
                                        } else if (strchr(reverse, res)) {
                                                ast_stream_rewind(c->stream, skip_ms);
                                        } else if (strchr(breakon, res)) {