diff --git a/channels/chan_multicast_rtp.c b/channels/chan_multicast_rtp.c
index e3414d2f3b36cc63d8a2923a9d32a9ec3cb4ab34..93f46473fbb8300812d99af083471daed1fcd692 100644
--- a/channels/chan_multicast_rtp.c
+++ b/channels/chan_multicast_rtp.c
@@ -126,11 +126,6 @@ static struct ast_channel *multicast_rtp_request(const char *type, format_t form
 	}
 	*destination++ = '\0';
 
-	if (!ast_sockaddr_parse(&destination_address, destination,
-				PARSE_PORT_REQUIRE)) {
-		goto failure;
-	}
-
 	if ((control = strchr(destination, '/'))) {
 		*control++ = '\0';
 		if (!ast_sockaddr_parse(&control_address, control,
@@ -139,6 +134,11 @@ static struct ast_channel *multicast_rtp_request(const char *type, format_t form
 		}
 	}
 
+	if (!ast_sockaddr_parse(&destination_address, destination,
+				PARSE_PORT_REQUIRE)) {
+		goto failure;
+	}
+
 	if (!(instance = ast_rtp_instance_new("multicast", NULL, &control_address, multicast_type))) {
 		goto failure;
 	}