Fix crash during attended transfer over PRI.
authorJeff Peeler <jpeeler@digium.com>
Thu, 10 Sep 2009 20:52:57 +0000 (20:52 +0000)
committerJeff Peeler <jpeeler@digium.com>
Thu, 10 Sep 2009 20:52:57 +0000 (20:52 +0000)
The owner pointers in the sig_pri_chan structure were not getting updated
in dahdi_fixup.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@217804 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_dahdi.c

index b78c6aa..c2b19fd 100644 (file)
@@ -6315,7 +6315,15 @@ static int dahdi_fixup(struct ast_channel *oldchan, struct ast_channel *newchan)
 
        if (analog_lib_handles(p->sig, p->radio, p->oprmode)) {
                analog_fixup(oldchan, newchan, p->sig_pvt);
 
        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)) {
+               struct sig_pri_chan *pchan = p->sig_pvt;
+               if (pchan->owner == oldchan) {
+                       pchan->owner = newchan;
+               }
        }
        }
+#endif
 
        update_conf(p);
        ast_mutex_unlock(&p->lock);
 
        update_conf(p);
        ast_mutex_unlock(&p->lock);