[asterisk-commits] twilson: branch 1.8 r297952 - /branches/1.8/main/features.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Thu Dec 9 14:48:49 CST 2010
Author: twilson
Date: Thu Dec 9 14:48:44 2010
New Revision: 297952
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=297952
Log:
Don't crash after Set(CDR(userfield)=...) in ast_bridge_call
Instead of setting peer->cdr = NULL, set it to not post.
(closes issue #18415)
Reported by: macbrody
Patches:
patch-18415 uploaded by jsolares (license 1167)
Tested by: jsolares, twilson
Modified:
branches/1.8/main/features.c
Modified: branches/1.8/main/features.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.8/main/features.c?view=diff&rev=297952&r1=297951&r2=297952
==============================================================================
--- branches/1.8/main/features.c (original)
+++ branches/1.8/main/features.c Thu Dec 9 14:48:44 2010
@@ -3091,6 +3091,7 @@
int hasfeatures=0;
int hadfeatures=0;
int autoloopflag;
+ int we_disabled_peer_cdr = 0;
struct ast_option_header *aoh;
struct ast_cdr *bridge_cdr = NULL;
struct ast_cdr *orig_peer_cdr = NULL;
@@ -3158,9 +3159,9 @@
ast_cdr_appenduserfield(chan, tmp);
} else
ast_cdr_setuserfield(chan, peer->cdr->userfield);
- /* free the peer's cdr without ast_cdr_free complaining */
- ast_free(peer->cdr);
- peer->cdr = NULL;
+ /* Don't delete the CDR; just disable it. */
+ ast_set_flag(peer->cdr, AST_CDR_FLAG_POST_DISABLED);
+ we_disabled_peer_cdr = 1;
}
ast_copy_string(orig_channame,chan->name,sizeof(orig_channame));
ast_copy_string(orig_peername,peer->name,sizeof(orig_peername));
@@ -3600,6 +3601,9 @@
ast_cdr_specialized_reset(new_peer_cdr, 0);
}
} else {
+ if (we_disabled_peer_cdr) {
+ ast_clear_flag(peer->cdr, AST_CDR_FLAG_POST_DISABLED);
+ }
ast_cdr_specialized_reset(peer->cdr, 0); /* nothing changed, reset the peer cdr */
}
}
More information about the asterisk-commits
mailing list