aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authorrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2009-06-25 21:07:14 +0000
committerrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2009-06-25 21:07:14 +0000
commit010f99fbc04866df4578b844abe3c04eefd59702 (patch)
tree73c15da18e941e65cb4e42c2f216a439b2a11e93 /main
parent7b75dc65d86258f7eeb1340b298ce23d0f78c698 (diff)
Merged revisions 203376 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ................ r203376 | russell | 2009-06-25 16:04:55 -0500 (Thu, 25 Jun 2009) | 16 lines Merged revisions 203375 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r203375 | russell | 2009-06-25 16:02:18 -0500 (Thu, 25 Jun 2009) | 9 lines Fix a case where CDR answer time could be before the start time involving parking. (closes issue #13794) Reported by: davidw Patches: 13794.patch uploaded by murf (license 17) 13794.patch.160 uploaded by murf (license 17) Tested by: murf, dbrooks ........ ................ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.1@203378 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main')
-rw-r--r--main/features.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/main/features.c b/main/features.c
index b4bc91646..04e987b3e 100644
--- a/main/features.c
+++ b/main/features.c
@@ -2493,7 +2493,16 @@ int ast_bridge_call(struct ast_channel *chan,struct ast_channel *peer,struct ast
before the macro started playing. To the phone system,
this is billable time for the call, even tho the caller
hears nothing but ringing while the macro does its thing. */
- if (peer_cdr && !ast_tvzero(peer_cdr->answer)) {
+
+ /* Another case where the peer cdr's time will be set, is when
+ A self-parks by pickup up phone and dialing 700, then B
+ picks up A by dialing its parking slot; there may be more
+ practical paths that get the same result, tho... in which
+ case you get the previous answer time from the Park... which
+ is before the bridge's start time, so I added in the
+ tvcmp check to the if below */
+
+ if (peer_cdr && !ast_tvzero(peer_cdr->answer) && ast_tvcmp(peer->cdr->answer, bridge_cdr->start) >= 0) {
bridge_cdr->answer = peer_cdr->answer;
bridge_cdr->disposition = peer_cdr->disposition;
if (chan_cdr) {