summaryrefslogtreecommitdiff
path: root/channels/sig_ss7.c
diff options
context:
space:
mode:
Diffstat (limited to 'channels/sig_ss7.c')
-rw-r--r--channels/sig_ss7.c32
1 files changed, 20 insertions, 12 deletions
diff --git a/channels/sig_ss7.c b/channels/sig_ss7.c
index cebd6c808..a23f9b25c 100644
--- a/channels/sig_ss7.c
+++ b/channels/sig_ss7.c
@@ -153,6 +153,22 @@ static void sig_ss7_set_remotelyblocked(struct sig_ss7_chan *p, int is_blocked)
/*!
* \internal
+ * \brief Open the SS7 channel media path.
+ * \since 1.8.12
+ *
+ * \param p Channel private control structure.
+ *
+ * \return Nothing
+ */
+static void sig_ss7_open_media(struct sig_ss7_chan *p)
+{
+ if (p->calls->open_media) {
+ p->calls->open_media(p->chan_pvt);
+ }
+}
+
+/*!
+ * \internal
* \brief Set the caller id information in the parent module.
* \since 1.8
*
@@ -807,12 +823,7 @@ void *ss7_linkset(void *data)
sig_ss7_queue_control(linkset, chanpos, AST_CONTROL_PROGRESS);
p->progress = 1;
sig_ss7_set_dialing(p, 0);
-#if 0 /* This code no longer seems to be necessary so I did not convert it. */
- if (p->dsp && p->dsp_features) {
- ast_dsp_set_features(p->dsp, p->dsp_features);
- p->dsp_features = 0;
- }
-#endif
+ sig_ss7_open_media(p);
}
break;
default:
@@ -1184,12 +1195,8 @@ void *ss7_linkset(void *data)
p->call_level = SIG_SS7_CALL_LEVEL_CONNECT;
}
sig_ss7_queue_control(linkset, chanpos, AST_CONTROL_ANSWER);
-#if 0 /* This code no longer seems to be necessary so I did not convert it. */
- if (p->dsp && p->dsp_features) {
- ast_dsp_set_features(p->dsp, p->dsp_features);
- p->dsp_features = 0;
- }
-#endif
+ sig_ss7_set_dialing(p, 0);
+ sig_ss7_open_media(p);
sig_ss7_set_echocanceller(p, 1);
sig_ss7_unlock_private(p);
}
@@ -1622,6 +1629,7 @@ int sig_ss7_answer(struct sig_ss7_chan *p, struct ast_channel *ast)
if (p->call_level < SIG_SS7_CALL_LEVEL_CONNECT) {
p->call_level = SIG_SS7_CALL_LEVEL_CONNECT;
}
+ sig_ss7_open_media(p);
res = isup_anm(p->ss7->ss7, p->ss7call);
ss7_rel(p->ss7);
return res;