summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Spencer <markster@digium.com>2003-06-29 23:23:54 +0000
committerMark Spencer <markster@digium.com>2003-06-29 23:23:54 +0000
commit6fb26bad224ddbe86a2836e6d26afd4716cf13a9 (patch)
tree5f94c1a50d4d05bc3945751cd23d8b8ece546687
parent746c335bcd475062f53e76cddcc8e116d7087d75 (diff)
Make masquerade compatible with timingfd
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1140 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rwxr-xr-xchannel.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/channel.c b/channel.c
index fb7d502bc..8d5e9d8c7 100755
--- a/channel.c
+++ b/channel.c
@@ -1041,11 +1041,15 @@ struct ast_frame *ast_read(struct ast_channel *chan)
data = chan->timingdata;
pthread_mutex_unlock(&chan->lock);
if (func) {
+#if 0
+ ast_log(LOG_DEBUG, "Calling private function\n");
+#endif
func(data);
} else {
blah = 0;
pthread_mutex_lock(&chan->lock);
ioctl(chan->timingfd, ZT_TIMERCONFIG, &blah);
+ chan->timingdata = NULL;
pthread_mutex_unlock(&chan->lock);
}
f = &null_frame;
@@ -1901,8 +1905,9 @@ static int ast_do_masquerade(struct ast_channel *original)
/* Update the type. */
original->type = clone->type;
/* Copy the FD's */
- for (x=0;x<AST_MAX_FDS;x++)
+ for (x=0;x<AST_MAX_FDS;x++) {
original->fds[x] = clone->fds[x];
+ }
/* Move the variables */
tmpv = original->varshead.first;
original->varshead.first = clone->varshead.first;
@@ -1931,6 +1936,9 @@ static int ast_do_masquerade(struct ast_channel *original)
original->callerid = clone->callerid;
clone->callerid = tmp;
+ /* Restore original timing file descriptor */
+ original->fds[AST_MAX_FDS - 2] = original->timingfd;
+
/* Our native formats are different now */
original->nativeformats = clone->nativeformats;