aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_phone.c
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2005-03-30 06:39:39 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2005-03-30 06:39:39 +0000
commit47c004373a2c8612d275dc5312574108608723fa (patch)
tree134584fe198f2a7edf651ec0c9e24fff73173c87 /channels/chan_phone.c
parent02b007bf356990a7c059f5059237239f2a04d348 (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-xchannels/chan_phone.c11
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;