diff --git a/channels/chan_sip.c b/channels/chan_sip.c index a029027ec3c466ab22c915d3cd7246e1ead84d1b..d2a00b404198787e1adb03c32057cc5c317646bc 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -12876,9 +12876,9 @@ static enum sip_result add_sdp(struct sip_request *resp, struct sip_pvt *p, int struct ast_str *m_video = ast_str_alloca(256); /* Media declaration line for video */ struct ast_str *m_text = ast_str_alloca(256); /* Media declaration line for text */ struct ast_str *m_modem = ast_str_alloca(256); /* Media declaration line for modem */ - struct ast_str *a_audio = ast_str_alloca(1024); /* Attributes for audio */ - struct ast_str *a_video = ast_str_alloca(1024); /* Attributes for video */ - struct ast_str *a_text = ast_str_alloca(1024); /* Attributes for text */ + struct ast_str *a_audio = ast_str_create(256); /* Attributes for audio */ + struct ast_str *a_video = ast_str_create(256); /* Attributes for video */ + struct ast_str *a_text = ast_str_create(256); /* Attributes for text */ struct ast_str *a_modem = ast_str_alloca(1024); /* Attributes for modem */ const char *a_crypto = NULL; const char *v_a_crypto = NULL; @@ -13142,11 +13142,6 @@ static enum sip_result add_sdp(struct sip_request *resp, struct sip_pvt *p, int add_dtls_to_sdp(p->rtp, &a_audio); } - - if (m_audio->len - m_audio->used < 2 || m_video->len - m_video->used < 2 || - m_text->len - m_text->used < 2 || a_text->len - a_text->used < 2 || - a_audio->len - a_audio->used < 2 || a_video->len - a_video->used < 2) - ast_log(LOG_WARNING, "SIP SDP may be truncated due to undersized buffer!!\n"); } if (add_t38) { @@ -13325,6 +13320,9 @@ static enum sip_result add_sdp(struct sip_request *resp, struct sip_pvt *p, int ast_debug(3, "Done building SDP. Settling with this capability: %s\n", ast_getformatname_multiple(buf, SIPBUFSIZE, tmpcap)); add_sdp_cleanup: + ast_free(a_text); + ast_free(a_video); + ast_free(a_audio); alreadysent = ast_format_cap_destroy(alreadysent); tmpcap = ast_format_cap_destroy(tmpcap); @@ -31059,7 +31057,6 @@ static int reload_config(enum channelreloadreason reason) ast_set_flag(&global_flags[0], SIP_DTMF_RFC2833); /*!< Default DTMF setting: RFC2833 */ ast_set_flag(&global_flags[0], SIP_DIRECT_MEDIA); /*!< Allow re-invites */ ast_set_flag(&global_flags[2], SIP_PAGE3_NAT_AUTO_RPORT); /*!< Default to nat=auto_force_rport */ - ast_set_flag(&global_flags[2], SIP_PAGE3_ICE_SUPPORT); /*!< Default to enabling ICE support */ ast_copy_string(default_engine, DEFAULT_ENGINE, sizeof(default_engine)); ast_copy_string(default_parkinglot, DEFAULT_PARKINGLOT, sizeof(default_parkinglot)); diff --git a/configs/sip.conf.sample b/configs/sip.conf.sample index 3d6db9798ee2f0588031e98bb3078fac3fc18fc6..bbd2af8df4e128ff5dc59553cbfa20d3f7455a07 100644 --- a/configs/sip.conf.sample +++ b/configs/sip.conf.sample @@ -919,10 +919,11 @@ srvlookup=yes ; Enable DNS SRV lookups on outbound calls ; ; subscribe_network_change_event = yes ; on by default ; -; ICE/STUN/TURN usage can be disabled globally or on a per-peer basis using the icesupport +; ICE/STUN/TURN usage can be enabled globally or on a per-peer basis using the icesupport ; configuration option. When set to yes ICE support is enabled. When set to no it is disabled. +; It is disabled by default. ; -; icesupport = no +; icesupport = yes ;----------------------------------- MEDIA HANDLING -------------------------------- ; By default, Asterisk tries to re-invite media streams to an optimal path. If there's diff --git a/res/res_rtp_asterisk.c b/res/res_rtp_asterisk.c index a16dbac942c2cd36cd1a3a08b8c797d0aa311758..a5ae99e318fd37ab426d116b71d2f4973d1a2f12 100644 --- a/res/res_rtp_asterisk.c +++ b/res/res_rtp_asterisk.c @@ -111,7 +111,7 @@ enum strict_rtp_state { }; #define DEFAULT_STRICT_RTP STRICT_RTP_CLOSED -#define DEFAULT_ICESUPPORT 0 +#define DEFAULT_ICESUPPORT 1 extern struct ast_srtp_res *res_srtp; extern struct ast_srtp_policy_res *res_srtp_policy;