From b0bb20b659ebaac0469e4acd7378546a618a0002 Mon Sep 17 00:00:00 2001 From: Boris Grozev Date: Thu, 4 Sep 2014 16:49:05 +0300 Subject: [PATCH] Adds ssltcp support. --- .../videobridge/IceUdpTransportManager.java | 44 ++++++++++++++++--- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/src/org/jitsi/videobridge/IceUdpTransportManager.java b/src/org/jitsi/videobridge/IceUdpTransportManager.java index cdacdc83d7..7dec3e3503 100644 --- a/src/org/jitsi/videobridge/IceUdpTransportManager.java +++ b/src/org/jitsi/videobridge/IceUdpTransportManager.java @@ -116,6 +116,18 @@ public class IceUdpTransportManager private static final String TCP_HARVESTER_PORT = "org.jitsi.videobridge.TCP_HARVESTER_PORT"; + /** + * The name of the property which controls the use of ssltcp candidates by + * MultiplexingTcpHostHarvester. + */ + private static final String TCP_HARVESTER_SSLTCP + = "org.jitsi.videobridge.TCP_HARVESTER_SSLTCP"; + + /** + * The default value of the TCP_HARVESTER_SSLTCP property. + */ + private static final boolean TCP_HARVESTER_SSLTCP_DEFAULT = true; + /** * The single MultiplexingTcpHostHarvester instance for the * application. @@ -795,7 +807,17 @@ private void describe( candidatePE.setID(generateCandidateID(candidate)); candidatePE.setNetwork(0); candidatePE.setPriority(candidate.getPriority()); - candidatePE.setProtocol(candidate.getTransport().toString()); + + // Advertise 'tcp' candidates for which SSL is enabled as 'ssltcp' + // (although internally their transport protocol remains "tcp") + Transport transport = candidate.getTransport(); + if (transport == Transport.TCP + && candidate.isSSL()) + { + transport = Transport.SSLTCP; + } + candidatePE.setProtocol(transport.toString()); + candidatePE.setType( CandidateType.valueOf(candidate.getType().toString())); @@ -1542,6 +1564,9 @@ private void initializeTcpHarvester() boolean fallback = false; if (!cfg.getBoolean(DISABLE_TCP_HARVESTER, false)) { + boolean ssltcp = cfg.getBoolean(TCP_HARVESTER_SSLTCP, + TCP_HARVESTER_SSLTCP_DEFAULT); + int port = cfg.getInt(TCP_HARVESTER_PORT, -1); if (port == -1) { @@ -1551,7 +1576,8 @@ private void initializeTcpHarvester() try { - tcpHostHarvester = new MultiplexingTcpHostHarvester(port); + tcpHostHarvester + = new MultiplexingTcpHostHarvester(port, ssltcp); } catch (IOException ioe) { @@ -1565,20 +1591,28 @@ private void initializeTcpHarvester() if (fallback) { + port = TCP_FALLBACK_PORT; try { tcpHostHarvester = new MultiplexingTcpHostHarvester( - TCP_FALLBACK_PORT); + port, + ssltcp); } catch (IOException e) { logger.warn("Failed to initialize TCP harvester on " - + "fallback port " + TCP_FALLBACK_PORT - + ": " + e); + + "fallback port " + port + ": " + e); + return; } } + + if (logger.isInfoEnabled()) + { + logger.info("Initialized TCP harvester on port " + port + + ", using SSLTCP:" + ssltcp); + } } } }