--- /usr/src/asterisk-1.2.14/apps/app_dial.c 2006-12-01 17:30:59.000000000 -0600 +++ /usr/src/asterisk/apps/app_dial.c 2007-01-26 19:10:52.000000000 -0600 @@ -390,6 +390,8 @@ char *context = NULL; char cidname[AST_MAX_EXTENSION]; + int pdd_set = 0; /* LES */ + single = (outgoing && !outgoing->next && !ast_test_flag(outgoing, OPT_MUSICBACK | OPT_RINGBACK)); if (single) { @@ -565,6 +567,11 @@ DIAL_NOFORWARDHTML); } /* If call has been answered, then the eventual hangup is likely to be normal hangup */ + if (!pdd_set) { /* LES */ + pdd_set = 1; + ast_cdr_pdd(in->cdr); + ast_verbose( VERBOSE_PREFIX_3 "%s PDD is %d\n", o->chan->name, (int)(in->cdr->pdd.tv_sec - in->cdr->start.tv_sec) ); + } in->hangupcause = AST_CAUSE_NORMAL_CLEARING; o->chan->hangupcause = AST_CAUSE_NORMAL_CLEARING; break; @@ -593,12 +600,22 @@ ast_indicate(in, AST_CONTROL_RINGING); (*sentringing)++; } + if (!pdd_set) { /* LES */ + pdd_set = 1; + ast_cdr_pdd(in->cdr); + ast_verbose( VERBOSE_PREFIX_3 "%s PDD is %d\n", o->chan->name, (int)(in->cdr->pdd.tv_sec - in->cdr->start.tv_sec) ); + } break; case AST_CONTROL_PROGRESS: if (option_verbose > 2) ast_verbose ( VERBOSE_PREFIX_3 "%s is making progress passing it to %s\n", o->chan->name,in->name); if (!ast_test_flag(outgoing, OPT_RINGBACK)) ast_indicate(in, AST_CONTROL_PROGRESS); + if (!pdd_set) { /* LES */ + pdd_set = 1; + ast_cdr_pdd(in->cdr); + ast_verbose( VERBOSE_PREFIX_3 "%s PDD is %d\n", o->chan->name, (int)(in->cdr->pdd.tv_sec - in->cdr->start.tv_sec) ); + } break; case AST_CONTROL_VIDUPDATE: if (option_verbose > 2) @@ -610,6 +627,11 @@ ast_verbose ( VERBOSE_PREFIX_3 "%s is proceeding passing it to %s\n", o->chan->name,in->name); if (!ast_test_flag(outgoing, OPT_RINGBACK)) ast_indicate(in, AST_CONTROL_PROCEEDING); + if (!pdd_set) { /* LES */ + pdd_set = 1; + ast_cdr_pdd(in->cdr); + ast_verbose( VERBOSE_PREFIX_3 "%s PDD is %d\n", o->chan->name, (int)(in->cdr->pdd.tv_sec - in->cdr->start.tv_sec) ); + } break; case AST_CONTROL_HOLD: if (option_verbose > 2)