summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsip-ua/sip_inv.c
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2009-08-11 16:26:20 +0000
committerNanang Izzuddin <nanang@teluu.com>2009-08-11 16:26:20 +0000
commitf61fccd70f181bf9156cd523f7d27812f62db7d7 (patch)
tree5522479e04b655e7a41f5e748a84c55c45f490c6 /pjsip/src/pjsip-ua/sip_inv.c
parent6f204c13ce8519524eb4da79359ac9b2aea08252 (diff)
Ticket #833:
- Renamed pjsip_timer_default_setting() to pjsip_timer_setting_default(). - Updated session timer settings in pjsua-lib as whole session timer setting struct (pyhton version remains using se & min_se). - Added output param SIP status code in pjsip_timer_process_resp() and pjsip_timer_process_req() to specify the corresponding SIP status code when function returning non-PJ_SUCCESS. - Fixed print header functions in sip_timer.c to have buffer check. - Added PJSIP_SESS_TIMER_DEF_SE setting to specify the default value of session timer interval. - Fixed role reference of the refresher, it is transaction role, not dialog role. git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2859 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsip-ua/sip_inv.c')
-rw-r--r--pjsip/src/pjsip-ua/sip_inv.c31
1 files changed, 15 insertions, 16 deletions
diff --git a/pjsip/src/pjsip-ua/sip_inv.c b/pjsip/src/pjsip-ua/sip_inv.c
index 80ae9718..736c00c9 100644
--- a/pjsip/src/pjsip-ua/sip_inv.c
+++ b/pjsip/src/pjsip-ua/sip_inv.c
@@ -484,6 +484,7 @@ static pj_bool_t mod_inv_on_rx_response(pjsip_rx_data *rdata)
pjsip_inv_session *inv;
pjsip_msg *msg = rdata->msg_info.msg;
pj_status_t status;
+ pjsip_status_code st_code;
dlg = pjsip_rdata_get_dlg(rdata);
@@ -512,7 +513,7 @@ static pj_bool_t mod_inv_on_rx_response(pjsip_rx_data *rdata)
}
/* Pass response to timer session module */
- status = pjsip_timer_process_resp(inv, rdata);
+ status = pjsip_timer_process_resp(inv, rdata, &st_code);
if (status != PJ_SUCCESS) {
pjsip_event e;
pjsip_tx_data *tdata;
@@ -520,8 +521,7 @@ static pj_bool_t mod_inv_on_rx_response(pjsip_rx_data *rdata)
PJSIP_EVENT_INIT_RX_MSG(e, rdata);
inv_send_ack(inv, &e);
- status = pjsip_inv_end_session(inv, PJSIP_ERRNO_TO_SIP_STATUS(status),
- NULL, &tdata);
+ status = pjsip_inv_end_session(inv, st_code, NULL, &tdata);
if (tdata && status == PJ_SUCCESS)
pjsip_inv_send_msg(inv, tdata);
@@ -974,8 +974,8 @@ PJ_DEF(pj_status_t) pjsip_inv_verify_request2(pjsip_rx_data *rdata,
*/
if ( ((*options & PJSIP_INV_REQUIRE_100REL)!=0 &&
(rem_option & PJSIP_INV_SUPPORT_100REL)==0) ||
- ((*options & PJSIP_INV_REQUIRE_100REL)!=0 &&
- (rem_option & PJSIP_INV_SUPPORT_100REL)==0))
+ ((*options & PJSIP_INV_REQUIRE_TIMER)!=0 &&
+ (rem_option & PJSIP_INV_SUPPORT_TIMER)==0))
{
code = PJSIP_SC_EXTENSION_REQUIRED;
status = PJSIP_ERRNO_FROM_SIP_STATUS(code);
@@ -1755,6 +1755,7 @@ PJ_DEF(pj_status_t) pjsip_inv_initial_answer( pjsip_inv_session *inv,
{
pjsip_tx_data *tdata;
pj_status_t status;
+ pjsip_status_code st_code2;
/* Verify arguments. */
PJ_ASSERT_RETURN(inv && p_tdata, PJ_EINVAL);
@@ -1771,13 +1772,11 @@ PJ_DEF(pj_status_t) pjsip_inv_initial_answer( pjsip_inv_session *inv,
goto on_return;
/* Invoke Session Timers module */
- status = pjsip_timer_process_req(inv, rdata);
+ status = pjsip_timer_process_req(inv, rdata, &st_code2);
if (status != PJ_SUCCESS) {
pj_status_t status2;
- status2 = pjsip_dlg_modify_response(inv->dlg, tdata,
- PJSIP_ERRNO_TO_SIP_STATUS(status),
- NULL);
+ status2 = pjsip_dlg_modify_response(inv->dlg, tdata, st_code2, NULL);
if (status2 != PJ_SUCCESS) {
pjsip_tx_data_dec_ref(tdata);
goto on_return;
@@ -2638,12 +2637,12 @@ static void inv_respond_incoming_update(pjsip_inv_session *inv,
pjmedia_sdp_neg_state neg_state;
pj_status_t status;
pjsip_tx_data *tdata = NULL;
+ pjsip_status_code st_code;
/* Invoke Session Timers module */
- status = pjsip_timer_process_req(inv, rdata);
+ status = pjsip_timer_process_req(inv, rdata, &st_code);
if (status != PJ_SUCCESS) {
- status = pjsip_dlg_create_response(inv->dlg, rdata,
- PJSIP_ERRNO_TO_SIP_STATUS(status),
+ status = pjsip_dlg_create_response(inv->dlg, rdata, st_code,
NULL, &tdata);
goto on_return;
}
@@ -3659,6 +3658,7 @@ static void inv_on_state_confirmed( pjsip_inv_session *inv, pjsip_event *e)
pjsip_rx_data *rdata = e->body.tsx_state.src.rdata;
pjsip_tx_data *tdata;
pj_status_t status;
+ pjsip_status_code st_code;
/* Check if we have INVITE pending. */
if (inv->invite_tsx && inv->invite_tsx!=tsx) {
@@ -3682,11 +3682,10 @@ static void inv_on_state_confirmed( pjsip_inv_session *inv, pjsip_event *e)
inv->invite_tsx = tsx;
/* Process session timers headers in the re-INVITE */
- status = pjsip_timer_process_req(inv, rdata);
+ status = pjsip_timer_process_req(inv, rdata, &st_code);
if (status != PJ_SUCCESS) {
- status = pjsip_dlg_create_response(inv->dlg, rdata,
- PJSIP_ERRNO_TO_SIP_STATUS(status),
- NULL, &tdata);
+ status = pjsip_dlg_create_response(inv->dlg, rdata, st_code,
+ NULL, &tdata);
if (status != PJ_SUCCESS)
return;