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;