Fixed #2037: Add on_rx_offer2() callback for SIP invite
Thanks to Andrey Kovalenko for the suggestion and the initial version of the patch. git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@5641 74dad513-b988-da41-8d7b-12977e46ad98
This commit is contained in:
parent
add2753ff5
commit
2cd3d0a311
|
@ -96,6 +96,17 @@ typedef enum pjsip_inv_state
|
||||||
PJSIP_INV_STATE_DISCONNECTED, /**< Session is terminated. */
|
PJSIP_INV_STATE_DISCONNECTED, /**< Session is terminated. */
|
||||||
} pjsip_inv_state;
|
} pjsip_inv_state;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Structure to hold parameters when calling the callback
|
||||||
|
* #on_rx_offer2().
|
||||||
|
*/
|
||||||
|
struct pjsip_inv_on_rx_offer_cb_param
|
||||||
|
{
|
||||||
|
const pjmedia_sdp_session *offer; /** Remote offer. */
|
||||||
|
const pjsip_rx_data *rdata; /** The received request. */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This structure contains callbacks to be registered by application to
|
* This structure contains callbacks to be registered by application to
|
||||||
* receieve notifications from the framework about various events in
|
* receieve notifications from the framework about various events in
|
||||||
|
@ -154,11 +165,24 @@ typedef struct pjsip_inv_callback
|
||||||
* this SDP answer will be negotiated with the offer, and the result
|
* this SDP answer will be negotiated with the offer, and the result
|
||||||
* will be sent with the SIP message.
|
* will be sent with the SIP message.
|
||||||
*
|
*
|
||||||
|
* Note: if callback #on_rx_offer2() is implemented, this callback will
|
||||||
|
* not be called.
|
||||||
|
*
|
||||||
* @param inv The invite session.
|
* @param inv The invite session.
|
||||||
* @param offer Remote offer.
|
* @param offer Remote offer.
|
||||||
*/
|
*/
|
||||||
void (*on_rx_offer)(pjsip_inv_session *inv,
|
void (*on_rx_offer)(pjsip_inv_session *inv,
|
||||||
const pjmedia_sdp_session *offer);
|
const pjmedia_sdp_session *offer);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This callback is called when the invite session has received
|
||||||
|
* new offer from peer. Variant of #on_rx_offer() callback.
|
||||||
|
*
|
||||||
|
* @param inv The invite session.
|
||||||
|
* @param param The callback parameters.
|
||||||
|
*/
|
||||||
|
void (*on_rx_offer2)(pjsip_inv_session *inv,
|
||||||
|
struct pjsip_inv_on_rx_offer_cb_param *param);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This callback is optional, and is called when the invite session has
|
* This callback is optional, and is called when the invite session has
|
||||||
|
|
|
@ -2103,10 +2103,14 @@ static pj_status_t inv_check_sdp_in_incoming_msg( pjsip_inv_session *inv,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Inform application about remote offer. */
|
/* Inform application about remote offer. */
|
||||||
if (mod_inv.cb.on_rx_offer && inv->notify) {
|
if (mod_inv.cb.on_rx_offer2 && inv->notify) {
|
||||||
|
struct pjsip_inv_on_rx_offer_cb_param param;
|
||||||
(*mod_inv.cb.on_rx_offer)(inv, sdp_info->sdp);
|
|
||||||
|
|
||||||
|
param.offer = sdp_info->sdp;
|
||||||
|
param.rdata = rdata;
|
||||||
|
(*mod_inv.cb.on_rx_offer2)(inv, ¶m);
|
||||||
|
} else if (mod_inv.cb.on_rx_offer && inv->notify) {
|
||||||
|
(*mod_inv.cb.on_rx_offer)(inv, sdp_info->sdp);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* application must have supplied an answer at this point. */
|
/* application must have supplied an answer at this point. */
|
||||||
|
|
Loading…
Reference in New Issue