Merged revisions 83074 via svnmerge from
authorJoshua Colp <jcolp@digium.com>
Wed, 19 Sep 2007 13:49:47 +0000 (13:49 +0000)
committerJoshua Colp <jcolp@digium.com>
Wed, 19 Sep 2007 13:49:47 +0000 (13:49 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r83074 | file | 2007-09-19 10:47:59 -0300 (Wed, 19 Sep 2007) | 6 lines

Protect the CDR record from modification by pbx_exec so that the application data contains the Queue data.
(closes issue #10761)
Reported by: snar
Patches:
      app-queue-mixmonitor.patch uploaded by snar (license 245)

........

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@83075 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_queue.c

index 9c11f14..d5f1e48 100644 (file)
@@ -2882,8 +2882,12 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce
                                                snprintf(mixmonargs, sizeof(mixmonargs)-1, "%s|b%s", tmpid2, monitor_options);
                                                
                                        ast_debug(1, "Arguments being passed to MixMonitor: %s\n", mixmonargs);
                                                snprintf(mixmonargs, sizeof(mixmonargs)-1, "%s|b%s", tmpid2, monitor_options);
                                                
                                        ast_debug(1, "Arguments being passed to MixMonitor: %s\n", mixmonargs);
-
+                                       /* We purposely lock the CDR so that pbx_exec does not update the application data */
+                                       if (qe->chan->cdr)
+                                               ast_set_flag(qe->chan->cdr, AST_CDR_FLAG_LOCKED);
                                        ret = pbx_exec(qe->chan, mixmonapp, mixmonargs);
                                        ret = pbx_exec(qe->chan, mixmonapp, mixmonargs);
+                                       if (qe->chan->cdr)
+                                               ast_clear_flag(qe->chan->cdr, AST_CDR_FLAG_LOCKED);
 
                                } else
                                        ast_log(LOG_WARNING, "Asked to run MixMonitor on this call, but cannot find the MixMonitor app!\n");
 
                                } else
                                        ast_log(LOG_WARNING, "Asked to run MixMonitor on this call, but cannot find the MixMonitor app!\n");