[svn-commits] murf: branch group/CDRfix5 r120823 - in /team/group/CDRfix5: channels/ main/

SVN commits to the Digium repositories svn-commits at lists.digium.com
Thu Jun 5 14:27:49 CDT 2008


Author: murf
Date: Thu Jun  5 14:27:49 2008
New Revision: 120823

URL: http://svn.digium.com/view/asterisk?view=rev&rev=120823
Log:
Mostly spacing updates; revert the code to 1.4 for attempt_transfer; at least until I can figure out why I messed it up in the first place.

Modified:
    team/group/CDRfix5/channels/chan_sip.c
    team/group/CDRfix5/main/features.c
    team/group/CDRfix5/main/pbx.c

Modified: team/group/CDRfix5/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/team/group/CDRfix5/channels/chan_sip.c?view=diff&rev=120823&r1=120822&r2=120823
==============================================================================
--- team/group/CDRfix5/channels/chan_sip.c (original)
+++ team/group/CDRfix5/channels/chan_sip.c Thu Jun  5 14:27:49 2008
@@ -16853,15 +16853,17 @@
 			ast_quiet_chan(peerd);
 
 		/* Fix CDRs so they're attached to the remaining channel */
-		if (peera->cdr && !peerb->cdr) {
+		if (peera->cdr && peerb->cdr)
+			peerb->cdr = ast_cdr_append(peerb->cdr, peera->cdr);
+		else if (peera->cdr) 
 			peerb->cdr = peera->cdr;
-			peera->cdr = NULL;
-		}
-
-		if (peerc->cdr && !peerb->cdr) {
+		peera->cdr = NULL;
+		
+		if (peerb->cdr && peerc->cdr)
+			peerb->cdr = ast_cdr_append(peerb->cdr, peerc->cdr);
+		else if (peerc->cdr) 
 			peerb->cdr = peerc->cdr;
-			peerc->cdr = NULL;
-		}
+		peerc->cdr = NULL;
 	
 		ast_debug(4, "SIP transfer: trying to masquerade %s into %s\n", peerc->name, peerb->name);
 		if (ast_channel_masquerade(peerb, peerc)) {

Modified: team/group/CDRfix5/main/features.c
URL: http://svn.digium.com/view/asterisk/team/group/CDRfix5/main/features.c?view=diff&rev=120823&r1=120822&r2=120823
==============================================================================
--- team/group/CDRfix5/main/features.c (original)
+++ team/group/CDRfix5/main/features.c Thu Jun  5 14:27:49 2008
@@ -2121,65 +2121,65 @@
 	
 	set_config_flags(chan, peer, config);
 	config->firstpass = 1;
-
+	
 	/* Answer if need be */
 	if (ast_answer(chan))
 		return -1;
-
-        /* show the two channels and cdrs involved in the bridge for debug & devel purposes */
-        ast_channel_log("Pre-bridge CHAN Channel info", chan);
-        ast_channel_log("Pre-bridge PEER Channel info", peer);
-        ast_cdr_log("CDR attached to CHAN", chan->cdr);
-        ast_cdr_log("CDR attached to PEER", peer->cdr);
-
-        ast_copy_string(orig_channame,chan->name,sizeof(orig_channame));
-        ast_copy_string(orig_peername,peer->name,sizeof(orig_peername));
-
-        /* two channels are being marked as linked here */
-        ast_channel_set_linkgroup(chan,peer);
-
-        if (!chan->cdr || (chan->cdr && !ast_test_flag(chan->cdr, AST_CDR_FLAG_POST_DISABLED))) {
-
-                if (chan->cdr) {
-                        ast_set_flag(chan->cdr, AST_CDR_FLAG_MAIN);
-                        ast_cdr_update(chan);
-                        bridge_cdr = ast_cdr_dup(chan->cdr);
-                        ast_copy_string(bridge_cdr->lastapp, chan->appl, sizeof(bridge_cdr->lastapp));
-                        ast_copy_string(bridge_cdr->lastdata, chan->data, sizeof(bridge_cdr->lastdata));
-                } else {
-                        /* better yet, in a xfer situation, find out why the chan cdr got zapped (pun unintentional) */
-                        bridge_cdr = ast_cdr_alloc(); /* this should be really, really rare/impossible? */
-                        ast_copy_string(bridge_cdr->channel, chan->name, sizeof(bridge_cdr->channel));
-                        ast_copy_string(bridge_cdr->dstchannel, peer->name, sizeof(bridge_cdr->dstchannel));
-                        ast_copy_string(bridge_cdr->uniqueid, chan->uniqueid, sizeof(bridge_cdr->uniqueid));
-                        ast_copy_string(bridge_cdr->lastapp, chan->appl, sizeof(bridge_cdr->lastapp));
-                        ast_copy_string(bridge_cdr->lastdata, chan->data, sizeof(bridge_cdr->lastdata));
-                        ast_cdr_setcid(bridge_cdr, chan);
-                        bridge_cdr->disposition = (chan->_state == AST_STATE_UP) ?  AST_CDR_ANSWERED : AST_CDR_NULL;
-                        bridge_cdr->amaflags = chan->amaflags ? chan->amaflags :  ast_default_amaflags;
-                        ast_copy_string(bridge_cdr->accountcode, chan->accountcode, sizeof(bridge_cdr->accountcode));
-                        /* Destination information */
-                        ast_copy_string(bridge_cdr->dst, chan->exten, sizeof(bridge_cdr->dst));
-                        ast_copy_string(bridge_cdr->dcontext, chan->context, sizeof(bridge_cdr->dcontext));
-                        if (peer->cdr) {
-                                bridge_cdr->start = peer->cdr->start;
-                                ast_copy_string(bridge_cdr->userfield, peer->cdr->userfield, sizeof(bridge_cdr->userfield));
-                        } else {
-                                ast_cdr_start(bridge_cdr);
-                        }
-                }
-                ast_cdr_answer(bridge_cdr);
-                ast_cdr_answer(chan->cdr); /* for the sake of cli status checks */
-                ast_set_flag(chan->cdr, AST_CDR_FLAG_BRIDGED);
-                if (peer->cdr)
-                        ast_set_flag(peer->cdr, AST_CDR_FLAG_BRIDGED);
-        }
-
+	
+	/* show the two channels and cdrs involved in the bridge for debug & devel purposes */
+	ast_channel_log("Pre-bridge CHAN Channel info", chan);
+	ast_channel_log("Pre-bridge PEER Channel info", peer);
+	ast_cdr_log("CDR attached to CHAN", chan->cdr);
+	ast_cdr_log("CDR attached to PEER", peer->cdr);
+	
+	ast_copy_string(orig_channame,chan->name,sizeof(orig_channame));
+	ast_copy_string(orig_peername,peer->name,sizeof(orig_peername));
+	
+	/* two channels are being marked as linked here */
+	ast_channel_set_linkgroup(chan,peer);
+	
+	if (!chan->cdr || (chan->cdr && !ast_test_flag(chan->cdr, AST_CDR_FLAG_POST_DISABLED))) {
+		
+		if (chan->cdr) {
+			ast_set_flag(chan->cdr, AST_CDR_FLAG_MAIN);
+			ast_cdr_update(chan);
+			bridge_cdr = ast_cdr_dup(chan->cdr);
+			ast_copy_string(bridge_cdr->lastapp, chan->appl, sizeof(bridge_cdr->lastapp));
+			ast_copy_string(bridge_cdr->lastdata, chan->data, sizeof(bridge_cdr->lastdata));
+		} else {
+			/* better yet, in a xfer situation, find out why the chan cdr got zapped (pun unintentional) */
+			bridge_cdr = ast_cdr_alloc(); /* this should be really, really rare/impossible? */
+			ast_copy_string(bridge_cdr->channel, chan->name, sizeof(bridge_cdr->channel));
+			ast_copy_string(bridge_cdr->dstchannel, peer->name, sizeof(bridge_cdr->dstchannel));
+			ast_copy_string(bridge_cdr->uniqueid, chan->uniqueid, sizeof(bridge_cdr->uniqueid));
+			ast_copy_string(bridge_cdr->lastapp, chan->appl, sizeof(bridge_cdr->lastapp));
+			ast_copy_string(bridge_cdr->lastdata, chan->data, sizeof(bridge_cdr->lastdata));
+			ast_cdr_setcid(bridge_cdr, chan);
+			bridge_cdr->disposition = (chan->_state == AST_STATE_UP) ?  AST_CDR_ANSWERED : AST_CDR_NULL;
+			bridge_cdr->amaflags = chan->amaflags ? chan->amaflags :  ast_default_amaflags;
+			ast_copy_string(bridge_cdr->accountcode, chan->accountcode, sizeof(bridge_cdr->accountcode));
+			/* Destination information */
+			ast_copy_string(bridge_cdr->dst, chan->exten, sizeof(bridge_cdr->dst));
+			ast_copy_string(bridge_cdr->dcontext, chan->context, sizeof(bridge_cdr->dcontext));
+			if (peer->cdr) {
+				bridge_cdr->start = peer->cdr->start;
+				ast_copy_string(bridge_cdr->userfield, peer->cdr->userfield, sizeof(bridge_cdr->userfield));
+			} else {
+				ast_cdr_start(bridge_cdr);
+			}
+		}
+		ast_cdr_answer(bridge_cdr);
+		ast_cdr_answer(chan->cdr); /* for the sake of cli status checks */
+		ast_set_flag(chan->cdr, AST_CDR_FLAG_BRIDGED);
+		if (peer->cdr)
+			ast_set_flag(peer->cdr, AST_CDR_FLAG_BRIDGED);
+	}
+	
 	for (;;) {
 		struct ast_channel *other;	/* used later */
-
+		
 		res = ast_channel_bridge(chan, peer, config, &f, &who);
-
+		
 		if (config->feature_timer) {
 			/* Update time limit for next pass */
 			diff = ast_tvdiff_ms(ast_tvnow(), config->start_time);
@@ -2336,29 +2336,29 @@
 			ast_frfree(f);
 
 	}
-        /* obey the NoCDR() wishes. */
-        if (!chan->cdr || (chan->cdr && !ast_test_flag(chan->cdr, AST_CDR_FLAG_POST_DISABLED))) {
-
-                ast_channel_log("XXXXXXXXXXX  Post-bridge CHAN Channel info XXXXXXXXXXX", chan);
-                ast_channel_log("XXXXXXXXXXX  Post-bridge PEER Channel info XXXXXXXXXXX", peer);
-
-                /* update the linked id field, as xfers, etc, might have changed it */
-                ast_copy_string(bridge_cdr->linkedid,chan->linkedid,sizeof(bridge_cdr->linkedid));
-
-                ast_cdr_end(bridge_cdr);
-
-                ast_cdr_log("Closing CDR attached to CHAN", chan->cdr);
-                ast_cdr_log("Closing CDR attached to PEER", peer->cdr);
-                if (chan->masqr && chan->masqr->cdr)
-                        ast_cdr_log("Closing CDR attached to Masqueraded CHAN", chan->masqr->cdr);
-
-                ast_cdr_detach(bridge_cdr);
-
-                /* just in case, these channels get bridged again before hangup */
-                ast_cdr_sortof_reset(chan->cdr,0);
-                ast_cdr_sortof_reset(peer->cdr,0);
-        }
-        return res;
+	/* obey the NoCDR() wishes. */
+	if (!chan->cdr || (chan->cdr && !ast_test_flag(chan->cdr, AST_CDR_FLAG_POST_DISABLED))) {
+		
+		ast_channel_log("XXXXXXXXXXX  Post-bridge CHAN Channel info XXXXXXXXXXX", chan);
+		ast_channel_log("XXXXXXXXXXX  Post-bridge PEER Channel info XXXXXXXXXXX", peer);
+		
+		/* update the linked id field, as xfers, etc, might have changed it */
+		ast_copy_string(bridge_cdr->linkedid,chan->linkedid,sizeof(bridge_cdr->linkedid));
+		
+		ast_cdr_end(bridge_cdr);
+		
+		ast_cdr_log("Closing CDR attached to CHAN", chan->cdr);
+		ast_cdr_log("Closing CDR attached to PEER", peer->cdr);
+		if (chan->masqr && chan->masqr->cdr)
+			ast_cdr_log("Closing CDR attached to Masqueraded CHAN", chan->masqr->cdr);
+		
+		ast_cdr_detach(bridge_cdr);
+		
+		/* just in case, these channels get bridged again before hangup */
+		ast_cdr_sortof_reset(chan->cdr,0);
+		ast_cdr_sortof_reset(peer->cdr,0);
+	}
+	return res;
 }
 
 /*! \brief Output parking event to manager */

Modified: team/group/CDRfix5/main/pbx.c
URL: http://svn.digium.com/view/asterisk/team/group/CDRfix5/main/pbx.c?view=diff&rev=120823&r1=120822&r2=120823
==============================================================================
--- team/group/CDRfix5/main/pbx.c (original)
+++ team/group/CDRfix5/main/pbx.c Thu Jun  5 14:27:49 2008
@@ -6870,7 +6870,7 @@
 					/* here we update the status of the call, which sould be busy.
 			  		 * if that fails then we set the status to failed */
 					if (ast_cdr_disposition(chan->cdr, chan->hangupcause))
-		 			ast_cdr_failed(chan->cdr);
+						ast_cdr_failed(chan->cdr);
  	  	  		}
 
 				if (channel) {




More information about the svn-commits mailing list