diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 6d851419962c8a272b5e39befff07eee7c9c3e2f..ef83666db575ebaa42c4473043c0cd0262534e82 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -13864,11 +13864,11 @@ static enum sip_result add_sdp(struct sip_request *resp, struct sip_pvt *p, int
 			case SDP_AUDIO:
 				if (needaudio) {
 					add_content(resp, ast_str_buffer(m_audio));
-					add_content(resp, ast_str_buffer(a_audio));
-					add_content(resp, hold);
 					if (a_crypto) {
 						add_content(resp, a_crypto);
 					}
+					add_content(resp, ast_str_buffer(a_audio));
+					add_content(resp, hold);
 				} else {
 					add_content(resp, offer->decline_m_line);
 				}
@@ -13914,11 +13914,11 @@ static enum sip_result add_sdp(struct sip_request *resp, struct sip_pvt *p, int
 		/* generate new SDP from scratch, no offers */
 		if (needaudio) {
 			add_content(resp, ast_str_buffer(m_audio));
-			add_content(resp, ast_str_buffer(a_audio));
-			add_content(resp, hold);
 			if (a_crypto) {
 				add_content(resp, a_crypto);
 			}
+			add_content(resp, ast_str_buffer(a_audio));
+			add_content(resp, hold);
 		}
 		if (needvideo) { /* only if video response is appropriate */
 			add_content(resp, ast_str_buffer(m_video));