diff --git a/sflphone-common/src/sip/sipvoiplink.cpp b/sflphone-common/src/sip/sipvoiplink.cpp index 7d66305764a7ab3674c4758d2022da21152d06d8..d4d35395af30e970975a438ec56f1e4c380c46bb 100644 --- a/sflphone-common/src/sip/sipvoiplink.cpp +++ b/sflphone-common/src/sip/sipvoiplink.cpp @@ -2852,13 +2852,36 @@ void call_on_forked (pjsip_inv_session *inv, pjsip_event *e) void call_on_tsx_changed (pjsip_inv_session *inv, pjsip_transaction *tsx, pjsip_event *e) { - _debug ("call_on_tsx_changed to state %s\n", transactionStateMap[tsx->state]); + _debug("call_on_tsx_changed to state %s\n", transactionStateMap[tsx->state]); if (tsx->role==PJSIP_ROLE_UAS && tsx->state==PJSIP_TSX_STATE_TRYING && - pjsip_method_cmp (&tsx->method, &pjsip_refer_method) ==0) { + pjsip_method_cmp (&tsx->method, &pjsip_refer_method) ==0) { /** Handle the refer method **/ onCallTransfered (inv, e->body.tsx_state.src.rdata); } + else if (tsx->role==PJSIP_ROLE_UAS && tsx->state==PJSIP_TSX_STATE_TRYING) { + + if (e && e->body.rx_msg.rdata) { + + pjsip_tx_data* t_data; + pjsip_rx_data* r_data = e->body.rx_msg.rdata; + + if(r_data->msg_info.msg->line.req.method.id == PJSIP_OTHER_METHOD) { + + _debug("%s\n", pjsip_rx_data_get_info(r_data)); + // _debug("%s\n", r_data->msg_info.msg_buf); + + + pjsip_dlg_create_response (inv->dlg, r_data, PJSIP_SC_OK, NULL, &t_data); + + pjsip_dlg_send_response(inv->dlg, tsx, t_data); + + // pjsip_dlg_respond + } + } + + } + } void regc_cb (struct pjsip_regc_cbparam *param)