Commit 71aceb56 authored by Pekka Pessi's avatar Pekka Pessi

nua: NUTAG_AUTOACK(0) is now obeyed always when media is disabled

Ignore-this: c5960a8330904eae5a1428158e4498c7

If media is enabled, stack autoacks 2XX responses to re-INVITEs unless
NUTAG_AUTOACK(0) is set on handle.

Also documenting NUTAG_AUTOACK() behaviour with re-INVITEs.

darcs-hash:20090512160519-db55f-4f5ff1650f8a633c3856f220e72bd5cec55b931d.gz
parent 6a324e56
......@@ -1108,8 +1108,9 @@ static int nua_invite_client_report(nua_client_request_t *cr,
if (next_state == nua_callstate_completing) {
if (NH_PGET(nh, auto_ack) ||
/* Auto-ACK response to re-INVITE unless auto_ack is set to 0 */
(ss->ss_state == nua_callstate_ready &&
/* Auto-ACK response to re-INVITE when media is enabled
and auto_ack is not set to 0 on handle */
(ss->ss_state == nua_callstate_ready && nh->nh_soa &&
!NH_PISSET(nh, auto_ack))) {
nua_client_request_t *cru;
......@@ -1867,8 +1868,10 @@ static int nua_prack_client_report(nua_client_request_t *cr,
/* There is an un-ACK-ed INVITE there */
assert(du->du_cr->cr_method == sip_method_invite);
if (NH_PGET(nh, auto_ack) ||
/* Auto-ACK response to re-INVITE unless auto_ack is set to 0 */
(ss->ss_state == nua_callstate_ready && !NH_PISSET(nh, auto_ack))) {
/* Auto-ACK response to re-INVITE when media is enabled
and auto_ack is not set to 0 on handle */
(ss->ss_state == nua_callstate_ready && nh->nh_soa &&
!NH_PISSET(nh, auto_ack))) {
/* There should be no UPDATE with offer/answer
if PRACK with offer/answer was ongoing! */
if (nua_invite_client_ack(du->du_cr, NULL) > 0)
......@@ -3441,8 +3444,10 @@ static int nua_update_client_report(nua_client_request_t *cr,
assert(du->du_cr->cr_method == sip_method_invite);
if (NH_PGET(nh, auto_ack) ||
/* Auto-ACK response to re-INVITE unless auto_ack is set to 0 */
(ss->ss_state == nua_callstate_ready && !NH_PISSET(nh, auto_ack))) {
/* Auto-ACK response to re-INVITE when media is enabled
and auto_ack is not set to 0 on handle */
(ss->ss_state == nua_callstate_ready && nh->nh_soa &&
!NH_PISSET(nh, auto_ack))) {
if (nua_invite_client_ack(du->du_cr, NULL) > 0)
next_state = nua_callstate_ready;
else
......
......@@ -1319,6 +1319,12 @@ tag_typedef_t nutag_autoanswer = BOOLTAG_TYPEDEF(autoAnswer);
*
* Default value is NUTAG_AUTOACK(1).
*
* @par Auto ACK with Re-INVITE requests
* By default, NUA tries to auto-ACK the final response to re-INVITE used to
* refresh the session when the media is enabled. Set NUTAG_AUTOACK(0) on
* the call handle (e.g., include the tag with nua_invite() or
* nua_respond()) in order to disable the auto ACK with re-INVITE.
*
* Corresponding tag taking reference parameter is NUTAG_AUTOACK_REF().
*/
tag_typedef_t nutag_autoack = BOOLTAG_TYPEDEF(autoACK);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment