diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-03-30 06:39:39 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-03-30 06:39:39 +0000 |
commit | 47c004373a2c8612d275dc5312574108608723fa (patch) | |
tree | 134584fe198f2a7edf651ec0c9e24fff73173c87 /channels/chan_phone.c | |
parent | 02b007bf356990a7c059f5059237239f2a04d348 (diff) |
Add fixup to chan_phone (bug #3825)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5304 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_phone.c')
-rwxr-xr-x | channels/chan_phone.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/channels/chan_phone.c b/channels/chan_phone.c index 62778ed76..5cee02e6f 100755 --- a/channels/chan_phone.c +++ b/channels/chan_phone.c @@ -140,6 +140,7 @@ static struct ast_frame *phone_read(struct ast_channel *ast); static int phone_write(struct ast_channel *ast, struct ast_frame *frame); static struct ast_frame *phone_exception(struct ast_channel *ast); static int phone_send_text(struct ast_channel *ast, const char *text); +static int phone_fixup(struct ast_channel *old, struct ast_channel *new); static const struct ast_channel_tech phone_tech = { .type = type, @@ -153,6 +154,7 @@ static const struct ast_channel_tech phone_tech = { .read = phone_read, .write = phone_write, .exception = phone_exception, + .fixup = phone_fixup }; static struct ast_channel_tech phone_tech_fxs = { @@ -168,10 +170,19 @@ static struct ast_channel_tech phone_tech_fxs = { .exception = phone_exception, .write_video = phone_write, .send_text = phone_send_text, + .fixup = phone_fixup }; static struct ast_channel_tech *cur_tech; +static int phone_fixup(struct ast_channel *old, struct ast_channel *new) +{ + struct phone_pvt *pvt = old->tech_pvt; + if (pvt && pvt->owner == old) + pvt->owner = new; + return 0; +} + static int phone_digit(struct ast_channel *ast, char digit) { struct phone_pvt *p; |