[asterisk-commits] rmudgett: trunk r269308 - in /trunk/channels: chan_dahdi.c sig_ss7.c sig_ss7.h
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Wed Jun 9 12:06:45 CDT 2010
Author: rmudgett
Date: Wed Jun 9 12:06:41 2010
New Revision: 269308
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=269308
Log:
Add missing API function to sig_ss7: sig_ss7_fixup().
Modified:
trunk/channels/chan_dahdi.c
trunk/channels/sig_ss7.c
trunk/channels/sig_ss7.h
Modified: trunk/channels/chan_dahdi.c
URL: http://svnview.digium.com/svn/asterisk/trunk/channels/chan_dahdi.c?view=diff&rev=269308&r1=269307&r2=269308
==============================================================================
--- trunk/channels/chan_dahdi.c (original)
+++ trunk/channels/chan_dahdi.c Wed Jun 9 12:06:41 2010
@@ -7074,27 +7074,34 @@
{
struct dahdi_pvt *p = newchan->tech_pvt;
int x;
+
ast_mutex_lock(&p->lock);
+
ast_debug(1, "New owner for channel %d is %s\n", p->channel, newchan->name);
if (p->owner == oldchan) {
p->owner = newchan;
}
- for (x = 0; x < 3; x++)
+ for (x = 0; x < 3; x++) {
if (p->subs[x].owner == oldchan) {
- if (!x)
+ if (!x) {
dahdi_unlink(NULL, p, 0);
+ }
p->subs[x].owner = newchan;
}
+ }
if (analog_lib_handles(p->sig, p->radio, p->oprmode)) {
analog_fixup(oldchan, newchan, p->sig_pvt);
- }
-#ifdef HAVE_PRI
- else if (dahdi_sig_pri_lib_handles(p->sig)) {
+#if defined(HAVE_PRI)
+ } else if (dahdi_sig_pri_lib_handles(p->sig)) {
sig_pri_fixup(oldchan, newchan, p->sig_pvt);
- }
-#endif
-
+#endif /* defined(HAVE_PRI) */
+#if defined(HAVE_SS7)
+ } else if (p->sig == SIG_SS7) {
+ sig_ss7_fixup(oldchan, newchan, p->sig_pvt);
+#endif /* defined(HAVE_SS7) */
+ }
update_conf(p);
+
ast_mutex_unlock(&p->lock);
if (newchan->_state == AST_STATE_RINGING) {
Modified: trunk/channels/sig_ss7.c
URL: http://svnview.digium.com/svn/asterisk/trunk/channels/sig_ss7.c?view=diff&rev=269308&r1=269307&r2=269308
==============================================================================
--- trunk/channels/sig_ss7.c (original)
+++ trunk/channels/sig_ss7.c Wed Jun 9 12:06:41 2010
@@ -1435,6 +1435,23 @@
}
/*!
+ * \brief Fix up a channel: If a channel is consumed, this is called. Basically update any ->owner links.
+ * \since 1.8
+ *
+ * \param oldchan Old channel pointer to replace.
+ * \param newchan New channel pointer to set.
+ * \param pchan Signaling private structure pointer.
+ *
+ * \return Nothing
+ */
+void sig_ss7_fixup(struct ast_channel *oldchan, struct ast_channel *newchan, struct sig_ss7_chan *pchan)
+{
+ if (pchan->owner == oldchan) {
+ pchan->owner = newchan;
+ }
+}
+
+/*!
* \brief SS7 answer channel.
* \since 1.8
*
Modified: trunk/channels/sig_ss7.h
URL: http://svnview.digium.com/svn/asterisk/trunk/channels/sig_ss7.h?view=diff&rev=269308&r1=269307&r2=269308
==============================================================================
--- trunk/channels/sig_ss7.h (original)
+++ trunk/channels/sig_ss7.h Wed Jun 9 12:06:41 2010
@@ -248,6 +248,7 @@
int sig_ss7_call(struct sig_ss7_chan *p, struct ast_channel *ast, char *rdest);
int sig_ss7_hangup(struct sig_ss7_chan *p, struct ast_channel *ast);
int sig_ss7_answer(struct sig_ss7_chan *p, struct ast_channel *ast);
+void sig_ss7_fixup(struct ast_channel *oldchan, struct ast_channel *newchan, struct sig_ss7_chan *pchan);
int sig_ss7_indicate(struct sig_ss7_chan *p, struct ast_channel *chan, int condition, const void *data, size_t datalen);
struct ast_channel *sig_ss7_request(struct sig_ss7_chan *p, enum sig_ss7_law law, const struct ast_channel *requestor, int transfercapability);
void sig_ss7_chan_delete(struct sig_ss7_chan *doomed);
More information about the asterisk-commits
mailing list