say.c has the following sequence repeated a zillion times:

        if(!ast_streamfile(chan, fn, language)) {
            if ((audiofd  > -1) && (ctrlfd > -1))
                res = ast_waitstream_full(chan, ints, audiofd, ctrlfd);
            else
                res = ast_waitstream(chan, ints);
        } 
        ast_stopstream(chan);

which obviously deserves to be changed into a function.
There is actually a similar one, ast_play_and_wait(), which
apart from the extra audiofd and ctrlfd has a difference
that caught my attention:


    int ast_play_and_wait(struct ast_channel *chan, const char *fn)
    {
        int d;
        d = ast_streamfile(chan, fn, chan->language);
        if (d)
                return d;   
        d = ast_waitstream(chan, AST_DIGIT_ANY);
        ast_stopstream(chan);
        return d;
    }

as you see, if ast_streamfile() fails, ast_stopstream() is not called.
Can someone explain which way is correct or whether they
are equivalent ?

        thanks
        luigi
_______________________________________________
Asterisk-Dev mailing list
[email protected]
http://lists.digium.com/mailman/listinfo/asterisk-dev
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-dev

Reply via email to