aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/java/sip/communicator/service/protocol/media/TransportManager.java
diff options
context:
space:
mode:
authorLyubomir Marinov <lyubomir.marinov@jitsi.org>2013-11-16 21:57:32 +0200
committerLyubomir Marinov <lyubomir.marinov@jitsi.org>2013-11-16 21:57:32 +0200
commit51c937b7c7a02e23fcef6d254692ff837a830a83 (patch)
treeda69005a31b5f7604a4ff97920cd79bc47d17a7d /src/net/java/sip/communicator/service/protocol/media/TransportManager.java
parent3579a958bc0ee9aa20914fea8e10139ec74ee643 (diff)
downloadjitsi-51c937b7c7a02e23fcef6d254692ff837a830a83.zip
jitsi-51c937b7c7a02e23fcef6d254692ff837a830a83.tar.gz
jitsi-51c937b7c7a02e23fcef6d254692ff837a830a83.tar.bz2
Supports the Jingle ICE-UDP transport in telephony conferences utilizing the Jitsi Videobridge server-side technology.
Diffstat (limited to 'src/net/java/sip/communicator/service/protocol/media/TransportManager.java')
-rw-r--r--src/net/java/sip/communicator/service/protocol/media/TransportManager.java59
1 files changed, 34 insertions, 25 deletions
diff --git a/src/net/java/sip/communicator/service/protocol/media/TransportManager.java b/src/net/java/sip/communicator/service/protocol/media/TransportManager.java
index 5bb4205..6764877 100644
--- a/src/net/java/sip/communicator/service/protocol/media/TransportManager.java
+++ b/src/net/java/sip/communicator/service/protocol/media/TransportManager.java
@@ -386,60 +386,69 @@ public abstract class TransportManager<U extends MediaAwareCallPeer<?, ?, ?>>
}
/**
- * Send empty UDP packets to target destination data/control ports
- * in order to open ports on NATs or and help RTP proxies latch onto our
- * RTP ports.
+ * Sends empty UDP packets to target destination data/control ports in order
+ * to open ports on NATs or and help RTP proxies latch onto our RTP ports.
*
* @param target <tt>MediaStreamTarget</tt>
- * @param type the {@link MediaType} of the connector we'd like to send
- * the hole punching packet through.
+ * @param type the {@link MediaType} of the connector we'd like to send the
+ * hole punching packet through.
*/
public void sendHolePunchPacket(MediaStreamTarget target, MediaType type)
{
logger.info("Send NAT hole punch packets");
//check how many hole punch packets we would be supposed to send:
- int packetCount = ProtocolMediaActivator.getConfigurationService()
- .getInt( HOLE_PUNCH_PKT_COUNT_PROPERTY,
- DEFAULT_HOLE_PUNCH_PKT_COUNT);
+ int packetCount
+ = ProtocolMediaActivator.getConfigurationService().getInt(
+ HOLE_PUNCH_PKT_COUNT_PROPERTY,
+ DEFAULT_HOLE_PUNCH_PKT_COUNT);
if (packetCount < 0)
packetCount = DEFAULT_HOLE_PUNCH_PKT_COUNT;
+ if (packetCount == 0)
+ return;
try
{
StreamConnector connector = getStreamConnector(type);
- synchronized(connector)
- {
- if(connector.getProtocol() == StreamConnector.Protocol.TCP)
- return;
+ if(connector.getProtocol() == StreamConnector.Protocol.TCP)
+ return;
- DatagramSocket socket;
+ byte[] buf = new byte[0];
+ synchronized(connector)
+ {
//we may want to send more than one packet in case they get lost
for(int i=0; i < packetCount; i++)
{
- /* data port (RTP) */
+ DatagramSocket socket;
+
+ // data/RTP
if((socket = connector.getDataSocket()) != null)
{
+ InetSocketAddress dataAddress = target.getDataAddress();
+
socket.send(
- new DatagramPacket(
- new byte[0],
- 0,
- target.getDataAddress().getAddress(),
- target.getDataAddress().getPort()));
+ new DatagramPacket(
+ buf,
+ buf.length,
+ dataAddress.getAddress(),
+ dataAddress.getPort()));
}
- /* control port (RTCP) */
+ // control/RTCP
if((socket = connector.getControlSocket()) != null)
{
+ InetSocketAddress controlAddress
+ = target.getControlAddress();
+
socket.send(
- new DatagramPacket(
- new byte[0],
- 0,
- target.getControlAddress().getAddress(),
- target.getControlAddress().getPort()));
+ new DatagramPacket(
+ buf,
+ buf.length,
+ controlAddress.getAddress(),
+ controlAddress.getPort()));
}
}
}