Allow channels to be moved if channel change is requested in SETUP_ACK, also add...
authorMatthew Fredrickson <creslin@digium.com>
Thu, 23 Mar 2006 21:41:23 +0000 (21:41 +0000)
committerMatthew Fredrickson <creslin@digium.com>
Thu, 23 Mar 2006 21:41:23 +0000 (21:41 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@14521 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_zap.c
configs/zapata.conf.sample

index 1fb0b87..6858435 100644 (file)
@@ -9249,15 +9249,19 @@ static void *pri_dchannel(void *vpri)
                                        ast_log(LOG_WARNING, "Received SETUP_ACKNOWLEDGE on unconfigured channel %d/%d span %d\n", 
                                                PRI_SPAN(e->setup_ack.channel), PRI_CHANNEL(e->setup_ack.channel), pri->span);
                                } else {
-                                       ast_mutex_lock(&pri->pvts[chanpos]->lock);
-                                       pri->pvts[chanpos]->setup_ack = 1;
-                                       /* Send any queued digits */
-                                       for (x=0;x<strlen(pri->pvts[chanpos]->dialdest);x++) {
-                                               ast_log(LOG_DEBUG, "Sending pending digit '%c'\n", pri->pvts[chanpos]->dialdest[x]);
-                                               pri_information(pri->pri, pri->pvts[chanpos]->call, 
-                                                       pri->pvts[chanpos]->dialdest[x]);
-                                       }
-                                       ast_mutex_unlock(&pri->pvts[chanpos]->lock);
+                                       chanpos = pri_fixup_principle(pri, chanpos, e->ring.call);
+                                       if (chanpos > -1) {
+                                               ast_mutex_lock(&pri->pvts[chanpos]->lock);
+                                               pri->pvts[chanpos]->setup_ack = 1;
+                                               /* Send any queued digits */
+                                               for (x=0;x<strlen(pri->pvts[chanpos]->dialdest);x++) {
+                                                       ast_log(LOG_DEBUG, "Sending pending digit '%c'\n", pri->pvts[chanpos]->dialdest[x]);
+                                                       pri_information(pri->pri, pri->pvts[chanpos]->call, 
+                                                               pri->pvts[chanpos]->dialdest[x]);
+                                               }
+                                               ast_mutex_unlock(&pri->pvts[chanpos]->lock);
+                                       } else
+                                               ast_log(LOG_WARNING, "Unable to move channel %d!\n", e->setup_ack.channel);
                                }
                                break;
                        case PRI_EVENT_NOTIFY:
@@ -10973,6 +10977,8 @@ static int setup_zap(int reload)
                                        nsf = PRI_NSF_SDN;
                                else if (!strcasecmp(v->value, "megacom"))
                                        nsf = PRI_NSF_MEGACOM;
+                               else if (!strcasecmp(v->value, "tollfreemegacom"))
+                                       nsf = PRI_NSF_TOLL_FREE_MEGACOM;                                
                                else if (!strcasecmp(v->value, "accunet"))
                                        nsf = PRI_NSF_ACCUNET;
                                else if (!strcasecmp(v->value, "none"))
index 8a283ce..0ab5144 100644 (file)
@@ -62,7 +62,7 @@ context=default
 switchtype=national
 ;
 ; Some switches (AT&T especially) require network specific facility IE
-; supported values are currently 'none', 'sdn', 'megacom', 'accunet'
+; supported values are currently 'none', 'sdn', 'megacom', 'tollfreemegacom', 'accunet'
 ;
 ;nsf=none
 ;