mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-02 03:48:02 +00:00
Merged revisions 275665 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r275665 | jpeeler | 2010-07-12 11:58:39 -0500 (Mon, 12 Jul 2010) | 11 lines Change ast_write to not stop generator when called from ast_prod. For SIP channels configured with the progressinband option on, the ringback was being immediately stopped. This problem was due to ast_prod being moved for a deadlock fix in 259858. Prodding the channel after setting up the generator triggered the check in ast_write to stop the generator. The fix here should write the frame the same as was done before the call to ast_prod was moved. (closes issue #17372) Reported by: tech_admin ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@275682 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -4271,7 +4271,7 @@ int ast_prod(struct ast_channel *chan)
|
||||
ast_debug(1, "Prodding channel '%s'\n", chan->name);
|
||||
a.subclass.codec = chan->rawwriteformat;
|
||||
a.data.ptr = nothing + AST_FRIENDLY_OFFSET;
|
||||
a.src = "ast_prod";
|
||||
a.src = "ast_prod"; /* this better match check in ast_write */
|
||||
if (ast_write(chan, &a))
|
||||
ast_log(LOG_WARNING, "Prodding channel '%s' failed\n", chan->name);
|
||||
}
|
||||
@@ -4425,10 +4425,10 @@ int ast_write(struct ast_channel *chan, struct ast_frame *fr)
|
||||
res = 0; /* XXX explain, why 0 ? */
|
||||
goto done;
|
||||
}
|
||||
if (chan->generatordata) {
|
||||
if (ast_test_flag(chan, AST_FLAG_WRITE_INT))
|
||||
ast_deactivate_generator(chan);
|
||||
else {
|
||||
if (chan->generatordata && strcasecmp(fr->src, "ast_prod")) {
|
||||
if (ast_test_flag(chan, AST_FLAG_WRITE_INT)) {
|
||||
ast_deactivate_generator(chan);
|
||||
} else {
|
||||
if (fr->frametype == AST_FRAME_DTMF_END) {
|
||||
/* There is a generator running while we're in the middle of a digit.
|
||||
* It's probably inband DTMF, so go ahead and pass it so it can
|
||||
|
||||
Reference in New Issue
Block a user