diff --git a/channels/chan_motif.c b/channels/chan_motif.c
index 972abdb7b422c645b4816ebf8870364d92209e02..432685bd5de74324b637be59b4dee72b6f087459 100644
--- a/channels/chan_motif.c
+++ b/channels/chan_motif.c
@@ -1738,6 +1738,7 @@ static struct ast_channel *jingle_request(const char *type, struct ast_format_ca
 	struct jingle_session *session;
 	struct ast_channel *chan;
 	enum jingle_transport transport = JINGLE_TRANSPORT_NONE;
+	struct ast_rtp_engine_ice *ice;
 	AST_DECLARE_APP_ARGS(args,
 			     AST_APP_ARG(name);
 			     AST_APP_ARG(target);
@@ -1841,6 +1842,15 @@ static struct ast_channel *jingle_request(const char *type, struct ast_format_ca
 		jingle_enable_video(session);
 	}
 
+	/* As this is outgoing set ourselves as controlling */
+	if (session->rtp && (ice = ast_rtp_instance_get_ice(session->rtp))) {
+		ice->ice_lite(session->rtp);
+	}
+
+	if (session->vrtp && (ice = ast_rtp_instance_get_ice(session->vrtp))) {
+		ice->ice_lite(session->vrtp);
+	}
+
 	/* We purposely don't decrement the session here as there is a reference on the channel */
 	ao2_link(endpoint->state->sessions, session);
 
@@ -1948,14 +1958,10 @@ static int jingle_interpret_ice_udp_transport(struct jingle_session *session, ik
 		return -1;
 	}
 
-	if (ast_strlen_zero(ufrag) || ast_strlen_zero(pwd)) {
-		jingle_queue_hangup_with_cause(session, AST_CAUSE_PROTOCOL_ERROR);
-		ast_log(LOG_ERROR, "Invalid ICE-UDP transport information received on session '%s', ufrag or pwd not present\n", session->sid);
-		return -1;
+	if (!ast_strlen_zero(ufrag) && !ast_strlen_zero(pwd)) {
+		ice->set_authentication(rtp, ufrag, pwd);
 	}
 
-	ice->set_authentication(rtp, ufrag, pwd);
-
 	for (candidate = iks_child(transport); candidate; candidate = iks_next(candidate)) {
 		char *component = iks_find_attrib(candidate, "component"), *foundation = iks_find_attrib(candidate, "foundation");
 		char *generation = iks_find_attrib(candidate, "generation"), *id = iks_find_attrib(candidate, "id");