@ -1317,6 +1317,7 @@ static int apply_negotiated_sdp_stream(struct ast_sip_session *session, struct a
* a NAT . This way there won ' t be an awkward delay before media starts flowing in some
* a NAT . This way there won ' t be an awkward delay before media starts flowing in some
* scenarios .
* scenarios .
*/
*/
AST_SCHED_DEL ( sched , session_media - > keepalive_sched_id ) ;
session_media - > keepalive_sched_id = ast_sched_add_variable ( sched , 500 , send_keepalive ,
session_media - > keepalive_sched_id = ast_sched_add_variable ( sched , 500 , send_keepalive ,
session_media , 1 ) ;
session_media , 1 ) ;
}
}
@ -1368,13 +1369,23 @@ static void change_outgoing_sdp_stream_media_address(pjsip_tx_data *tdata, struc
pj_strdup2 ( tdata - > pool , & stream - > conn - > addr , transport - > external_media_address ) ;
pj_strdup2 ( tdata - > pool , & stream - > conn - > addr , transport - > external_media_address ) ;
}
}
/*! \brief Function which destroys the RTP instance when session ends */
/*! \brief Function which stops the RTP instance */
static void stream_ destroy ( struct ast_sip_session_media * session_media )
static void stream_ stop ( struct ast_sip_session_media * session_media )
{
{
if ( session_media - > rtp ) {
if ( ! session_media - > rtp ) {
return ;
}
AST_SCHED_DEL ( sched , session_media - > keepalive_sched_id ) ;
AST_SCHED_DEL ( sched , session_media - > keepalive_sched_id ) ;
AST_SCHED_DEL ( sched , session_media - > timeout_sched_id ) ;
AST_SCHED_DEL ( sched , session_media - > timeout_sched_id ) ;
ast_rtp_instance_stop ( session_media - > rtp ) ;
ast_rtp_instance_stop ( session_media - > rtp ) ;
}
/*! \brief Function which destroys the RTP instance when session ends */
static void stream_destroy ( struct ast_sip_session_media * session_media )
{
if ( session_media - > rtp ) {
stream_stop ( session_media ) ;
ast_rtp_instance_destroy ( session_media - > rtp ) ;
ast_rtp_instance_destroy ( session_media - > rtp ) ;
}
}
session_media - > rtp = NULL ;
session_media - > rtp = NULL ;
@ -1387,6 +1398,7 @@ static struct ast_sip_session_sdp_handler audio_sdp_handler = {
. create_outgoing_sdp_stream = create_outgoing_sdp_stream ,
. create_outgoing_sdp_stream = create_outgoing_sdp_stream ,
. apply_negotiated_sdp_stream = apply_negotiated_sdp_stream ,
. apply_negotiated_sdp_stream = apply_negotiated_sdp_stream ,
. change_outgoing_sdp_stream_media_address = change_outgoing_sdp_stream_media_address ,
. change_outgoing_sdp_stream_media_address = change_outgoing_sdp_stream_media_address ,
. stream_stop = stream_stop ,
. stream_destroy = stream_destroy ,
. stream_destroy = stream_destroy ,
} ;
} ;
@ -1397,6 +1409,7 @@ static struct ast_sip_session_sdp_handler video_sdp_handler = {
. create_outgoing_sdp_stream = create_outgoing_sdp_stream ,
. create_outgoing_sdp_stream = create_outgoing_sdp_stream ,
. apply_negotiated_sdp_stream = apply_negotiated_sdp_stream ,
. apply_negotiated_sdp_stream = apply_negotiated_sdp_stream ,
. change_outgoing_sdp_stream_media_address = change_outgoing_sdp_stream_media_address ,
. change_outgoing_sdp_stream_media_address = change_outgoing_sdp_stream_media_address ,
. stream_stop = stream_stop ,
. stream_destroy = stream_destroy ,
. stream_destroy = stream_destroy ,
} ;
} ;