@ -51,9 +51,6 @@
# define MOD_DATA_ON_RESPONSE "on_response"
# define MOD_DATA_ON_RESPONSE "on_response"
# define MOD_DATA_NAT_HOOK "nat_hook"
# define MOD_DATA_NAT_HOOK "nat_hook"
/* Hostname used for origin line within SDP */
static const pj_str_t * hostname ;
/* Some forward declarations */
/* Some forward declarations */
static void handle_incoming_request ( struct ast_sip_session * session , pjsip_rx_data * rdata , pjsip_event_id_e type ) ;
static void handle_incoming_request ( struct ast_sip_session * session , pjsip_rx_data * rdata , pjsip_event_id_e type ) ;
static void handle_incoming_response ( struct ast_sip_session * session , pjsip_rx_data * rdata , pjsip_event_id_e type ) ;
static void handle_incoming_response ( struct ast_sip_session * session , pjsip_rx_data * rdata , pjsip_event_id_e type ) ;
@ -2094,9 +2091,6 @@ static struct pjmedia_sdp_session *create_local_sdp(pjsip_inv_session *inv, stru
}
}
pj_strdup2 ( inv - > pool , & local - > origin . user , session - > endpoint - > media . sdpowner ) ;
pj_strdup2 ( inv - > pool , & local - > origin . user , session - > endpoint - > media . sdpowner ) ;
local - > origin . net_type = STR_IN ;
local - > origin . addr_type = session - > endpoint - > media . rtp . ipv6 ? STR_IP6 : STR_IP4 ;
local - > origin . addr = * hostname ;
pj_strdup2 ( inv - > pool , & local - > name , session - > endpoint - > media . sdpsession ) ;
pj_strdup2 ( inv - > pool , & local - > name , session - > endpoint - > media . sdpsession ) ;
/* Now let the handlers add streams of various types, pjmedia will automatically reorder the media streams for us */
/* Now let the handlers add streams of various types, pjmedia will automatically reorder the media streams for us */
@ -2109,6 +2103,23 @@ static struct pjmedia_sdp_session *create_local_sdp(pjsip_inv_session *inv, stru
/* Use the connection details of the first media stream if possible for SDP level */
/* Use the connection details of the first media stream if possible for SDP level */
if ( local - > media_count ) {
if ( local - > media_count ) {
local - > conn = local - > media [ 0 ] - > conn ;
local - > conn = local - > media [ 0 ] - > conn ;
pj_strassign ( & local - > origin . net_type , & local - > conn - > net_type ) ;
pj_strassign ( & local - > origin . addr_type , & local - > conn - > addr_type ) ;
pj_strassign ( & local - > origin . addr , & local - > conn - > addr ) ;
} else {
local - > origin . net_type = STR_IN ;
local - > origin . addr_type = session - > endpoint - > media . rtp . ipv6 ? STR_IP6 : STR_IP4 ;
if ( ! ast_strlen_zero ( session - > endpoint - > media . address ) ) {
pj_strdup2 ( inv - > pool , & local - > origin . addr , session - > endpoint - > media . address ) ;
} else {
pj_sockaddr localaddr ;
char our_ip [ PJ_INET6_ADDRSTRLEN ] ;
pj_gethostip ( session - > endpoint - > media . rtp . ipv6 ? pj_AF_INET6 ( ) : pj_AF_INET ( ) , & localaddr ) ;
pj_sockaddr_print ( & localaddr , our_ip , sizeof ( our_ip ) , 0 ) ;
pj_strdup2 ( inv - > pool , & local - > origin . addr , our_ip ) ;
}
}
}
return local ;
return local ;
@ -2258,6 +2269,7 @@ static void session_outgoing_nat_hook(pjsip_tx_data *tdata, struct ast_sip_trans
static int load_module ( void )
static int load_module ( void )
{
{
pjsip_endpoint * endpt ;
pjsip_endpoint * endpt ;
if ( ! ast_sip_get_sorcery ( ) | | ! ast_sip_get_pjsip_endpoint ( ) ) {
if ( ! ast_sip_get_sorcery ( ) | | ! ast_sip_get_pjsip_endpoint ( ) ) {
return AST_MODULE_LOAD_DECLINE ;
return AST_MODULE_LOAD_DECLINE ;
}
}
@ -2275,7 +2287,6 @@ static int load_module(void)
pjsip_inv_usage_init ( endpt , & inv_callback ) ;
pjsip_inv_usage_init ( endpt , & inv_callback ) ;
pjsip_100rel_init_module ( endpt ) ;
pjsip_100rel_init_module ( endpt ) ;
pjsip_timer_init_module ( endpt ) ;
pjsip_timer_init_module ( endpt ) ;
hostname = pj_gethostname ( ) ;
if ( ast_sip_register_service ( & session_module ) ) {
if ( ast_sip_register_service ( & session_module ) ) {
return AST_MODULE_LOAD_DECLINE ;
return AST_MODULE_LOAD_DECLINE ;
}
}