[asterisk-commits] juggie: branch juggie/NoLossCDR r84114 - /team/juggie/NoLossCDR/main/cdr.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri Sep 28 18:31:19 CDT 2007
Author: juggie
Date: Fri Sep 28 18:31:19 2007
New Revision: 84114
URL: http://svn.digium.com/view/asterisk?view=rev&rev=84114
Log:
add in support for max queue size
Modified:
team/juggie/NoLossCDR/main/cdr.c
Modified: team/juggie/NoLossCDR/main/cdr.c
URL: http://svn.digium.com/view/asterisk/team/juggie/NoLossCDR/main/cdr.c?view=diff&rev=84114&r1=84113&r2=84114
==============================================================================
--- team/juggie/NoLossCDR/main/cdr.c (original)
+++ team/juggie/NoLossCDR/main/cdr.c Fri Sep 28 18:31:19 2007
@@ -715,7 +715,7 @@
ast_set_flag(cdr, AST_CDR_FLAG_POSTED);
if (ast_test_flag(cdr, AST_CDR_FLAG_POST_DISABLED))
return;
- /* add a ref to make sure we dont have a weird race condition */
+ /* add a ref to make sure we dont have a race condition */
ast_atomic_fetchadd_int(&cdr->usecount, +1);
AST_RWLIST_RDLOCK(&be_list);
AST_RWLIST_TRAVERSE(&be_list, i, list) {
@@ -725,12 +725,14 @@
ast_atomic_fetchadd_int(&cdr->usecount, +1);
/* increment cdr counter for this queue */
ast_atomic_fetchadd_int(&i->waiting_cdrs, +1);
+ /* if we hit our max number of records, delete the oldest one */
+ if (i->waiting_cdrs > queuesize)
+ AST_LIST_REMOVE_HEAD(&i->cdr_queue, list);
AST_LIST_INSERT_TAIL(&i->cdr_queue, cdr, list);
ast_cond_signal(&i->cdr_pending_cond);
AST_LIST_UNLOCK(&i->cdr_queue);
}
AST_RWLIST_UNLOCK(&be_list);
- ast_atomic_fetchadd_int(&cdr->usecount, -1);
if (ast_atomic_fetchadd_int(&cdr->usecount, -1) == 1) {
ast_debug(1, "cdr record no longer in any queue, so lets free it\n");
ast_cdr_free(cdr);
More information about the asterisk-commits
mailing list