summaryrefslogtreecommitdiff
path: root/res/res_pjsip_t38.c
diff options
context:
space:
mode:
Diffstat (limited to 'res/res_pjsip_t38.c')
-rw-r--r--res/res_pjsip_t38.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/res/res_pjsip_t38.c b/res/res_pjsip_t38.c
index c5d0412c4..a031716d9 100644
--- a/res/res_pjsip_t38.c
+++ b/res/res_pjsip_t38.c
@@ -440,12 +440,25 @@ static struct ast_frame *t38_framehook(struct ast_channel *chan, struct ast_fram
return f;
}
+static void t38_masq(void *data, int framehook_id,
+ struct ast_channel *old_chan, struct ast_channel *new_chan)
+{
+ if (ast_channel_tech(old_chan) == ast_channel_tech(new_chan)) {
+ return;
+ }
+
+ /* This framehook is only applicable to PJSIP channels */
+ ast_framehook_detach(new_chan, framehook_id);
+}
+
/*! \brief Function called to attach T.38 framehook to channel when appropriate */
static void t38_attach_framehook(struct ast_sip_session *session)
{
static struct ast_framehook_interface hook = {
.version = AST_FRAMEHOOK_INTERFACE_VERSION,
.event_cb = t38_framehook,
+ .chan_fixup_cb = t38_masq,
+ .chan_breakdown_cb = t38_masq,
};
/* Only attach the framehook on the first outgoing INVITE or the first incoming INVITE */