From b150461d58baabdc349d2fa2abf2429664e3b526 Mon Sep 17 00:00:00 2001 From: Daniel Pocock Date: Sat, 9 Aug 2014 14:07:17 +0200 Subject: [PATCH] Force transport selection when sips URI or transport parameter --- .../impl/protocol/sip/CallSipImpl.java | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/src/net/java/sip/communicator/impl/protocol/sip/CallSipImpl.java b/src/net/java/sip/communicator/impl/protocol/sip/CallSipImpl.java index b55999f70..075a318ae 100644 --- a/src/net/java/sip/communicator/impl/protocol/sip/CallSipImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/sip/CallSipImpl.java @@ -357,10 +357,41 @@ public CallPeerSipImpl invite(Address calleeAddress, Request invite = messageFactory.createInviteRequest(calleeAddress, cause); + // Transport preference + String forceTransport = null; + javax.sip.address.URI calleeURI = calleeAddress.getURI(); + if(calleeURI.getScheme().toLowerCase().equals("sips")) + { + // MUST use TLS + forceTransport = "TLS"; + logger.trace("detected SIPS URI, must use TLS"); + } + else if(calleeURI.isSipURI() && calleeURI instanceof SipURI) + { + SipURI _calleeURI = (SipURI)calleeURI; + // check for a transport parameter + forceTransport = _calleeURI.getTransportParam(); + if(forceTransport != null) + { + logger.trace("got transport parameter: " + forceTransport); + } + } + // Transaction ClientTransaction inviteTransaction = null; - SipProvider jainSipProvider - = getProtocolProvider().getDefaultJainSipProvider(); + SipProvider jainSipProvider; + if(forceTransport != null) + { + logger.trace("trying to use transport: " + forceTransport); + jainSipProvider = getProtocolProvider() + .getJainSipProvider(forceTransport); + } + else + { + logger.trace("trying default transport"); + jainSipProvider = getProtocolProvider() + .getDefaultJainSipProvider(); + } try {