[svn-commits] crichter: branch 1.2 r48552 - in /branches/1.2/channels: ./ misdn/

svn-commits at lists.digium.com svn-commits at lists.digium.com
Mon Dec 18 03:19:42 MST 2006


Author: crichter
Date: Mon Dec 18 04:19:39 2006
New Revision: 48552

URL: http://svn.digium.com/view/asterisk?view=rev&rev=48552
Log:
when our PTP Partner sends us a SETUP with a preselected channel we just accept it, even when we're NT. added some checks for segfaults.

Modified:
    branches/1.2/channels/chan_misdn.c
    branches/1.2/channels/misdn/isdn_lib.c

Modified: branches/1.2/channels/chan_misdn.c
URL: http://svn.digium.com/view/asterisk/branches/1.2/channels/chan_misdn.c?view=diff&rev=48552&r1=48551&r2=48552
==============================================================================
--- branches/1.2/channels/chan_misdn.c (original)
+++ branches/1.2/channels/chan_misdn.c Mon Dec 18 04:19:39 2006
@@ -2393,6 +2393,10 @@
 	const struct tone_zone_sound *ts= NULL;
 	struct ast_channel *ast=cl->ast;
 
+	if (!ast) {
+		chan_misdn_log(0,cl->bc->port,"No Ast in dialtone_indicate\n");
+		return -1;
+	}
 
 	int nd=0;
 	misdn_cfg_get( cl->bc->port, MISDN_CFG_NODIALTONE, &nd, sizeof(nd));
@@ -2426,6 +2430,12 @@
 static int stop_indicate(struct chan_list *cl)
 {
 	struct ast_channel *ast=cl->ast;
+
+	if (!ast) {
+		chan_misdn_log(0,cl->bc->port,"No Ast in stop_indicate\n");
+		return -1;
+	}
+
 	chan_misdn_log(3,cl->bc->port," --> None\n");
 	misdn_lib_tone_generator_stop(cl->bc);
 	ast_playtones_stop(ast);

Modified: branches/1.2/channels/misdn/isdn_lib.c
URL: http://svn.digium.com/view/asterisk/branches/1.2/channels/misdn/isdn_lib.c?view=diff&rev=48552&r1=48551&r2=48552
==============================================================================
--- branches/1.2/channels/misdn/isdn_lib.c (original)
+++ branches/1.2/channels/misdn/isdn_lib.c Mon Dec 18 04:19:39 2006
@@ -666,6 +666,7 @@
 {
 
 	cb_log(4,stack->port,"set_chan_in_stack: %d\n",channel);
+	dump_chan_list(stack);
 	if (channel >=1 ) {
 		if (!stack->channels[channel-1])
 			stack->channels[channel-1] = 1;
@@ -1482,15 +1483,16 @@
 					cb_log(0, stack->port, "Any Channel Requested, but we have no more!!\n");
 					break;
 				}
-			}  
-
-			if (bc->channel >0 && bc->channel<255) {
-				int ret=set_chan_in_stack(stack ,bc->channel);
-				if (event == EVENT_SETUP && ret<0){
-					/* empty bchannel */
-					bc->channel=0;
-					bc->out_cause=44;
-					misdn_lib_send_event(bc,EVENT_RELEASE_COMPLETE);
+			} else { 
+
+				if (bc->channel >0 && bc->channel<255) {
+					int ret=set_chan_in_stack(stack ,bc->channel);
+					if (event == EVENT_SETUP && ret<0){
+						/* empty bchannel */
+						bc->channel=0;
+						bc->out_cause=44;
+						misdn_lib_send_event(bc,EVENT_RELEASE_COMPLETE);
+					}
 				}
 			}
 
@@ -1802,12 +1804,6 @@
 			cb_log(7, stack->port, " --> new_process: New L3Id: %x\n",hh->dinfo);
 			bc->l3_id=hh->dinfo;
 
-			if (bc->channel<=0) {
-				bc->channel=find_free_chan_in_stack(stack,0);
-
-				if (bc->channel<=0)
-					goto ERR_NO_CHANNEL;
-			}
 		}
 		break;
 
@@ -2035,6 +2031,13 @@
 
 			switch (event) {
 				case EVENT_SETUP:
+					if (bc->channel<=0) {
+						bc->channel=find_free_chan_in_stack(stack,0);
+		
+						if (bc->channel<=0)
+							goto ERR_NO_CHANNEL;
+					}
+
 					if (bc->channel>0 && bc->channel<255) {
 						if (stack->ptp)  {
 							int ret=set_chan_in_stack(stack, bc->channel);



More information about the svn-commits mailing list