Ticket #416 (closed enhancement: fixed)

Opened 10 years ago

Last modified 10 years ago

Allow application to handle sending ACK manually

Reported by: bennylp Owned by: bennylp
Priority: normal Milestone: release-0.9.0
Component: pjsip Version: trunk
Keywords: Cc:
Backport to 1.x milestone: Backported:

Description

Please see "3PCC call transfer implementation" thread on PJSIP mailing list archive for discussion (http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/2007-November/000713.html)

Change History

comment:1 Changed 10 years ago by bennylp

  • Status changed from new to closed
  • Resolution set to fixed

Implemented in r1598:

  • Added on_send_ack() callback in pjsip_inv_callback to let application handle ACK transmission manually.
  • Added pjsip_inv_create_ack() to create the ACK request.

comment:2 Changed 10 years ago by bennylp

Here's a snippet to use the callback and to send ACK:

static int saved_cseq;

static void on_send_ack(pjsip_inv_session *inv, pjsip_rx_data *rdata)
{
    if (saved_cseq == 0)
	saved_cseq = rdata->msg_info.cseq->cseq;
}

static void send_the_ack(pjsip_inv_session *inv)
{
  pjsip_tx_data *ack;
  pj_status_t status;

  // See if we need to send SDP with the ACK	
  if (pjmedia_sdp_neg_get_state(inv->neg)==PJMEDIA_SDP_NEG_STATE_REMOTE_OFFER) {
    pjsip_inv_set_sdp_answer(inv, answer);
  }

  // Create and send ACK
  status = pjsip_inv_create_ack(inv, saved_cseq, &ack);
  if (status == PJ_SUCCESS)
     pjsip_inv_send_msg(inv, ack);
}
Note: See TracTickets for help on using tickets.