mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 18:55:19 +00:00 
			
		
		
		
	Fix incomplete CDR merge from r195881
Because res/res_features.c was removed and main/cdr.c added, these changes didn't make it to trunk and the 1.6.x branches git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@257810 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		| @@ -2950,8 +2950,8 @@ int ast_bridge_call(struct ast_channel *chan,struct ast_channel *peer,struct ast | ||||
| 	struct ast_option_header *aoh; | ||||
| 	struct ast_cdr *bridge_cdr = NULL; | ||||
| 	struct ast_cdr *orig_peer_cdr = NULL; | ||||
| 	struct ast_cdr *chan_cdr = pick_unlocked_cdr(chan->cdr); /* the proper chan cdr, if there are forked cdrs */ | ||||
| 	struct ast_cdr *peer_cdr = pick_unlocked_cdr(peer->cdr); /* the proper chan cdr, if there are forked cdrs */ | ||||
| 	struct ast_cdr *chan_cdr = chan->cdr; /* the proper chan cdr, if there are forked cdrs */ | ||||
| 	struct ast_cdr *peer_cdr = peer->cdr; /* the proper chan cdr, if there are forked cdrs */ | ||||
| 	struct ast_cdr *new_chan_cdr = NULL; /* the proper chan cdr, if there are forked cdrs */ | ||||
| 	struct ast_cdr *new_peer_cdr = NULL; /* the proper chan cdr, if there are forked cdrs */ | ||||
|  | ||||
| @@ -3028,6 +3028,10 @@ int ast_bridge_call(struct ast_channel *chan,struct ast_channel *peer,struct ast | ||||
| 			ast_set_flag(chan_cdr, AST_CDR_FLAG_MAIN); | ||||
| 			ast_cdr_update(chan); | ||||
| 			bridge_cdr = ast_cdr_dup_unique_swap(chan_cdr); | ||||
| 			/* rip any forked CDR's off of the chan_cdr and attach | ||||
| 			 * them to the bridge_cdr instead */ | ||||
| 			bridge_cdr->next = chan_cdr->next; | ||||
| 			chan_cdr->next = NULL; | ||||
| 			ast_copy_string(bridge_cdr->lastapp, S_OR(chan->appl, ""), sizeof(bridge_cdr->lastapp)); | ||||
| 			ast_copy_string(bridge_cdr->lastdata, S_OR(chan->data, ""), sizeof(bridge_cdr->lastdata)); | ||||
| 			if (peer_cdr && !ast_strlen_zero(peer_cdr->userfield)) { | ||||
| @@ -3074,11 +3078,11 @@ int ast_bridge_call(struct ast_channel *chan,struct ast_channel *peer,struct ast | ||||
| 		   tvcmp check to the if below */ | ||||
|  | ||||
| 		if (peer_cdr && !ast_tvzero(peer_cdr->answer) && ast_tvcmp(peer_cdr->answer, bridge_cdr->start) >= 0) { | ||||
| 			bridge_cdr->answer = peer_cdr->answer; | ||||
| 			bridge_cdr->disposition = peer_cdr->disposition; | ||||
| 			ast_cdr_setanswer(bridge_cdr, peer_cdr->answer); | ||||
| 			ast_cdr_setdisposition(bridge_cdr, peer_cdr->disposition); | ||||
| 			if (chan_cdr) { | ||||
| 				chan_cdr->answer = peer_cdr->answer; | ||||
| 				chan_cdr->disposition = peer_cdr->disposition; | ||||
| 				ast_cdr_setanswer(chan_cdr, peer_cdr->answer); | ||||
| 				ast_cdr_setdisposition(chan_cdr, peer_cdr->disposition); | ||||
| 			} | ||||
| 		} else { | ||||
| 			ast_cdr_answer(bridge_cdr); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user