Add the ability to dynamically specify weights for responses to DUNDi queries.
[asterisk/asterisk.git] / main / cdr.c
index 3f6215c..9c56f0f 100644 (file)
@@ -57,7 +57,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
 
 /*! Default AMA flag for billing records (CDR's) */
 int ast_default_amaflags = AST_CDR_DOCUMENTATION;
-char ast_default_accountcode[AST_MAX_ACCOUNT_CODE] = "";
+char ast_default_accountcode[AST_MAX_ACCOUNT_CODE];
 
 struct ast_cdr_beitem {
        char name[20];
@@ -77,7 +77,7 @@ static struct ast_cdr_batch {
        int size;
        struct ast_cdr_batch_item *head;
        struct ast_cdr_batch_item *tail;
-} *batch = NULL;
+} *batch;
 
 static struct sched_context *sched;
 static int cdr_sched = -1;
@@ -88,7 +88,7 @@ static pthread_t cdr_thread = AST_PTHREADT_NULL;
 #define BATCH_SCHEDULER_ONLY_DEFAULT 0
 #define BATCH_SAFE_SHUTDOWN_DEFAULT 1
 
-static int enabled;
+static int enabled;            /*! Is the CDR subsystem enabled ? */
 static int batchmode;
 static int batchsize;
 static int batchtime;
@@ -101,6 +101,10 @@ AST_MUTEX_DEFINE_STATIC(cdr_batch_lock);
 AST_MUTEX_DEFINE_STATIC(cdr_pending_lock);
 static ast_cond_t cdr_pending_cond;
 
+int check_cdr_enabled()
+{
+       return enabled;
+}
 
 /*! Register a CDR driver. Each registered CDR driver generates a CDR 
        \return 0 on success, -1 on failure 
@@ -288,7 +292,7 @@ int ast_cdr_setvar(struct ast_cdr *cdr, const char *name, const char *value, int
        struct varshead *headp;
        int x;
        
-       for(x = 0; cdr_readonly_vars[x]; x++) {
+       for (x = 0; cdr_readonly_vars[x]; x++) {
                if (!strcasecmp(name, cdr_readonly_vars[x])) {
                        ast_log(LOG_ERROR, "Attempt to set the '%s' read-only variable!.\n", name);
                        return -1;
@@ -493,7 +497,7 @@ int ast_cdr_disposition(struct ast_cdr *cdr, int cause)
        int res = 0;
 
        for (; cdr; cdr = cdr->next) {
-               switch(cause) {
+               switch (cause) {
                case AST_CAUSE_BUSY:
                        ast_cdr_busy(cdr);
                        break;
@@ -624,7 +628,7 @@ char *ast_cdr_disp2str(int disposition)
 /*! Converts AMA flag to printable string */
 char *ast_cdr_flags2str(int flag)
 {
-       switch(flag) {
+       switch (flag) {
        case AST_CDR_OMIT:
                return "OMIT";
        case AST_CDR_BILLING:
@@ -861,6 +865,7 @@ void ast_cdr_submit_batch(int shutdown)
                        if (option_debug)
                                ast_log(LOG_DEBUG, "CDR multi-threaded batch processing begins now\n");
                }
+               pthread_attr_destroy(&attr);
        }
 }
 
@@ -945,7 +950,7 @@ static void *do_cdr(void *data)
        int schedms;
        int numevents = 0;
 
-       for(;;) {
+       for (;;) {
                struct timeval now;
                schedms = ast_sched_wait(sched);
                /* this shouldn't happen, but provide a 1 second default just in case */