mirror of https://github.com/OpenVidu/openvidu.git
openvidu-server: Better implementation for MEDIA_NODES_PUBLIC_IPS
parent
e1b6fb6179
commit
aa050b140d
|
@ -594,39 +594,35 @@ public abstract class MediaEndpoint {
|
||||||
|
|
||||||
// If Ip is configured
|
// If Ip is configured
|
||||||
if (ipToReplace != null && !ipToReplace.isEmpty()) {
|
if (ipToReplace != null && !ipToReplace.isEmpty()) {
|
||||||
|
// Create IceCandidateParser to modify original candidate information
|
||||||
|
IceCandidateDataParser candidateParser = new IceCandidateDataParser(candidate);
|
||||||
|
|
||||||
// Candidate which will have the public IP
|
|
||||||
IceCandidate candidatePublicIp = new IceCandidate(candidate.getCandidate(), candidate.getSdpMid(),
|
|
||||||
candidate.getSdpMLineIndex());
|
|
||||||
IceCandidateDataParser candidatePublicIpParser = new IceCandidateDataParser(candidatePublicIp);
|
|
||||||
// Only create host candidates to increase priority
|
// Only create host candidates to increase priority
|
||||||
if (candidatePublicIpParser.getType() == IceCandidateType.host) {
|
if (candidateParser.getType() == IceCandidateType.host) {
|
||||||
candidatePublicIpParser.setIp(ipToReplace);
|
String originalIP = candidateParser.getIp();
|
||||||
// Max priority for public IP
|
// Send candidate with new configured IP
|
||||||
candidatePublicIpParser.setMaxPriority();
|
IceCandidate candidateMaxPriority = new IceCandidate(candidate.getCandidate(), candidate.getSdpMid(),
|
||||||
candidatePublicIp.setCandidate(candidatePublicIpParser.toString());
|
|
||||||
|
|
||||||
gatheredCandidateList.add(candidatePublicIp);
|
|
||||||
this.owner.logIceCandidate(new WebrtcDebugEvent(this.owner, this.streamId, WebrtcDebugEventIssuer.server,
|
|
||||||
this.getWebrtcDebugOperation(), WebrtcDebugEventType.iceCandidate,
|
|
||||||
gson.toJsonTree(candidatePublicIp).toString()));
|
|
||||||
owner.sendIceCandidate(senderPublicId, endpointName, candidatePublicIp);
|
|
||||||
|
|
||||||
// Candidate which will have the private IP exposed of the media node
|
|
||||||
IceCandidate candidatePrivateIp = new IceCandidate(candidate.getCandidate(), candidate.getSdpMid(),
|
|
||||||
candidate.getSdpMLineIndex());
|
candidate.getSdpMLineIndex());
|
||||||
IceCandidateDataParser candidatePrivateIpParser = new IceCandidateDataParser(candidatePrivateIp);
|
candidateParser.setIp(ipToReplace);
|
||||||
// Min priority for private IP
|
candidateParser.setMaxPriority(); // Set max priority for this candidate
|
||||||
candidatePrivateIpParser.setMinPriority();
|
candidateMaxPriority.setCandidate(candidateParser.toString());
|
||||||
candidatePrivateIpParser.setIp(kurentoPrivateIp);
|
gatheredCandidateList.add(candidateMaxPriority);
|
||||||
candidatePrivateIp.setCandidate(candidatePrivateIpParser.toString());
|
|
||||||
|
|
||||||
gatheredCandidateList.add(candidatePrivateIp);
|
|
||||||
this.owner.logIceCandidate(new WebrtcDebugEvent(this.owner, this.streamId, WebrtcDebugEventIssuer.server,
|
this.owner.logIceCandidate(new WebrtcDebugEvent(this.owner, this.streamId, WebrtcDebugEventIssuer.server,
|
||||||
this.getWebrtcDebugOperation(), WebrtcDebugEventType.iceCandidate,
|
this.getWebrtcDebugOperation(), WebrtcDebugEventType.iceCandidate,
|
||||||
gson.toJsonTree(candidatePrivateIp).toString()));
|
gson.toJsonTree(candidateMaxPriority).toString()));
|
||||||
|
owner.sendIceCandidate(senderPublicId, endpointName, candidateMaxPriority);
|
||||||
|
|
||||||
owner.sendIceCandidate(senderPublicId, endpointName, candidatePrivateIp);
|
// Send candidate with original IP
|
||||||
|
IceCandidate candidateMinPriority = new IceCandidate(candidate.getCandidate(), candidate.getSdpMid(),
|
||||||
|
candidate.getSdpMLineIndex());
|
||||||
|
candidateParser.setIp(originalIP);
|
||||||
|
candidateParser.setMinPriority(); // Set min priority for private IP
|
||||||
|
candidateMinPriority.setCandidate(candidateParser.toString());
|
||||||
|
gatheredCandidateList.add(candidateMinPriority);
|
||||||
|
this.owner.logIceCandidate(new WebrtcDebugEvent(this.owner, this.streamId, WebrtcDebugEventIssuer.server,
|
||||||
|
this.getWebrtcDebugOperation(), WebrtcDebugEventType.iceCandidate,
|
||||||
|
gson.toJsonTree(candidateMinPriority).toString()));
|
||||||
|
owner.sendIceCandidate(senderPublicId, endpointName, candidateMinPriority);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue