Index: cdr.c =================================================================== RCS file: /usr/cvsroot/asterisk/cdr.c,v retrieving revision 1.52 diff -u -u -r1.52 cdr.c --- cdr.c 9 Aug 2005 15:37:32 -0000 1.52 +++ cdr.c 19 Aug 2005 18:36:20 -0000 @@ -76,6 +76,7 @@ static int batchtime; static int batchscheduleronly; static int batchsafeshutdown; +char *uniqueid_prefix = NULL; AST_MUTEX_DEFINE_STATIC(cdr_batch_lock); @@ -1101,6 +1102,7 @@ const char *batched_value; const char *scheduleronly_value; const char *batchsafeshutdown_value; + const char *uniqueid_prefix_value; const char *size_value; const char *time_value; int cfg_size; @@ -1125,6 +1127,12 @@ if (cdr_sched > -1) ast_sched_del(sched, cdr_sched); + /* Free it if this is a reload and it was already set */ + if (uniqueid_prefix) { + free(uniqueid_prefix); + uniqueid_prefix = NULL; + } + if ((config = ast_config_load("cdr.conf"))) { if ((enabled_value = ast_variable_retrieve(config, "general", "enable"))) { enabled = ast_true(enabled_value); @@ -1138,6 +1146,11 @@ if ((batchsafeshutdown_value = ast_variable_retrieve(config, "general", "safeshutdown"))) { batchsafeshutdown = ast_true(batchsafeshutdown_value); } + if ((uniqueid_prefix_value = ast_variable_retrieve(config, "general", "uniqueid_prefix"))) { + uniqueid_prefix = malloc(strlen(uniqueid_prefix_value) + 1); + if (uniqueid_prefix) + strcpy(uniqueid_prefix, uniqueid_prefix_value); + } if ((size_value = ast_variable_retrieve(config, "general", "size"))) { if (sscanf(size_value, "%d", &cfg_size) < 1) ast_log(LOG_WARNING, "Unable to convert '%s' to a numeric value.\n", size_value); Index: channel.c =================================================================== RCS file: /usr/cvsroot/asterisk/channel.c,v retrieving revision 1.232 diff -u -u -r1.232 channel.c --- channel.c 16 Aug 2005 20:37:27 -0000 1.232 +++ channel.c 19 Aug 2005 18:36:24 -0000 @@ -72,6 +72,7 @@ static int shutting_down = 0; static int uniqueint = 0; +extern char *uniqueid_prefix; unsigned long global_fin = 0, global_fout = 0; @@ -533,7 +534,10 @@ tmp->data = NULL; tmp->fin = global_fin; tmp->fout = global_fout; - snprintf(tmp->uniqueid, sizeof(tmp->uniqueid), "%li.%d", (long) time(NULL), uniqueint++); + if (uniqueid_prefix && !ast_strlen_zero(uniqueid_prefix)) + snprintf(tmp->uniqueid, sizeof(tmp->uniqueid), "%s.%li.%d", uniqueid_prefix, (long) time(NULL), uniqueint++); + else + snprintf(tmp->uniqueid, sizeof(tmp->uniqueid), "%li.%d", (long) time(NULL), uniqueint++); headp = &tmp->varshead; ast_mutex_init(&tmp->lock); AST_LIST_HEAD_INIT(headp); Index: configs/cdr.conf.sample =================================================================== RCS file: /usr/cvsroot/asterisk/configs/cdr.conf.sample,v retrieving revision 1.1 diff -u -u -r1.1 cdr.conf.sample --- configs/cdr.conf.sample 3 Jun 2005 01:42:31 -0000 1.1 +++ configs/cdr.conf.sample 19 Aug 2005 18:36:28 -0000 @@ -49,3 +49,7 @@ ; is "yes". ;safeshutdown=yes +; This will insert a prefix at the beginning of the uniqueid associated with +; every channel. An example of its use would be to use it to identify which +; server a CDR record came from. +;uniqueid_prefix=1