diff options
author | mmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-11-18 18:25:55 +0000 |
---|---|---|
committer | mmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-11-18 18:25:55 +0000 |
commit | 3f7c58e49af66ec3545a689b00267ea41dacaf7b (patch) | |
tree | e3cb4dc86b73c0b29908ff4869066745f0c7ba1a /apps/app_followme.c | |
parent | ec27f636d2458e359cd0b91d275c748607697879 (diff) |
Fix a crash in the end_bridge_callback of app_dial and
app_followme which would occur at the end of an attended
transfer. The error occurred because we initially stored
a pointer to an ast_channel which then was hung up due
to a masquerade.
This commit adds a "fixup" callback to the bridge_config
structure to allow for end_bridge_callback_data to be
changed in the case that a new channel pointer is needed
for the end_bridge_callback.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@157305 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps/app_followme.c')
-rw-r--r-- | apps/app_followme.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/apps/app_followme.c b/apps/app_followme.c index 3de1a4608..fca6facc2 100644 --- a/apps/app_followme.c +++ b/apps/app_followme.c @@ -935,6 +935,11 @@ static void end_bridge_callback (void *data) ast_channel_unlock(chan); } +static void end_bridge_callback_data_fixup(struct ast_bridge_config *bconfig, struct ast_channel *originator, struct ast_channel *terminator) +{ + bconfig->end_bridge_callback_data = originator; +} + static int app_exec(struct ast_channel *chan, void *data) { struct fm_args targs; @@ -1057,6 +1062,7 @@ static int app_exec(struct ast_channel *chan, void *data) config.end_bridge_callback = end_bridge_callback; config.end_bridge_callback_data = chan; + config.end_bridge_callback_data_fixup = end_bridge_callback_data_fixup; ast_moh_stop(caller); /* Be sure no generators are left on it */ |