diff options
Diffstat (limited to 'pjsip')
-rw-r--r-- | pjsip/src/pjsip-ua/sip_inv.c | 8 | ||||
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_call.c | 12 |
2 files changed, 14 insertions, 6 deletions
diff --git a/pjsip/src/pjsip-ua/sip_inv.c b/pjsip/src/pjsip-ua/sip_inv.c index 8c6b4ccd..b6215d4b 100644 --- a/pjsip/src/pjsip-ua/sip_inv.c +++ b/pjsip/src/pjsip-ua/sip_inv.c @@ -35,10 +35,10 @@ static const char *inv_state_names[] = { - "NULL ", - "CALLING ", - "INCOMING ", - "EARLY ", + "NULL", + "CALLING", + "INCOMING", + "EARLY", "CONNECTING", "CONFIRMED ", "DISCONNCTD", diff --git a/pjsip/src/pjsua-lib/pjsua_call.c b/pjsip/src/pjsua-lib/pjsua_call.c index d5530570..679bc6fd 100644 --- a/pjsip/src/pjsua-lib/pjsua_call.c +++ b/pjsip/src/pjsua-lib/pjsua_call.c @@ -90,6 +90,10 @@ static void reset_call(pjsua_call_id id) call->conf_slot = PJSUA_INVALID_ID; call->last_text.ptr = call->last_text_buf_; call->last_text.slen = 0; + call->conn_time.sec = 0; + call->conn_time.msec = 0; + call->res_time.sec = 0; + call->res_time.msec = 0; } @@ -1776,7 +1780,7 @@ PJ_DEF(pj_status_t) pjsua_call_dump( pjsua_call_id call_id, *p++ = '\n'; /* Calculate call duration */ - if (call->inv->state >= PJSIP_INV_STATE_CONFIRMED) { + if (call->conn_time.sec != 0) { pj_gettimeofday(&duration); PJ_TIME_VAL_SUB(duration, call->conn_time); con_delay = call->conn_time; @@ -1787,7 +1791,7 @@ PJ_DEF(pj_status_t) pjsua_call_dump( pjsua_call_id call_id, } /* Calculate first response delay */ - if (call->inv->state >= PJSIP_INV_STATE_EARLY) { + if (call->res_time.sec != 0) { res_delay = call->res_time; PJ_TIME_VAL_SUB(res_delay, call->start_time); } else { @@ -1976,6 +1980,10 @@ static void pjsua_call_on_state_changed(pjsip_inv_session *inv, /* Free call */ call->inv = NULL; --pjsua_var.call_cnt; + + /* Reset call */ + reset_call(call->index); + } PJSUA_UNLOCK(); |