/** * Check if the via header is external * @param viaHeader the via header to check * @return true if the via header is external, false otherwise */ public final boolean isViaHeaderExternal(ViaHeader viaHeader) { if (viaHeader != null) { return isExternal(viaHeader.getHost(), viaHeader.getPort(), viaHeader.getTransport()); } return true; }
public boolean equals(Object other) { if (other==this) return true; if (other instanceof ViaHeader) { final ViaHeader o = (ViaHeader) other; return getProtocol().equalsIgnoreCase( o.getProtocol() ) && getTransport().equalsIgnoreCase( o.getTransport() ) && getHost().equalsIgnoreCase( o.getHost() ) && getPort() == o.getPort() && equalParameters( o ); } return false; }
if(topmostViaHeader != null) { host = topmostViaHeader.getHost(); port = topmostViaHeader.getPort();
@Override public void sendMessage(SIPMessage message) throws IOException { final SIPResponse response = (SIPResponse) message; if(response != null && Request.INVITE.equals(getMethod()) && response.getStatusCode() > 100 && response.getStatusCode() < 200) { this.localDialogId = response.getDialogId(true); if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) { logger.logDebug(transactionId + " : local dialog Id " + localDialogId); } if(isReliable()) { this.peerReliablePort = ((ResponseExt)response).getTopmostViaHeader().getPort(); if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) { logger.logDebug(transactionId + " : peer Reliable Port " + peerReliablePort); } } // store the tx when the response will be sent try { ((ClusteredSipStack)sipStack).getSipCache().putServerTransaction(this); } catch (SipCacheException e) { logger.logError("problem storing server transaction " + transactionId + " into the distributed cache", e); } } super.sendMessage(message); }
viaHeader.getPort() != sipConnector.getPort()) { if(logger.isTraceEnabled()) { logger.trace("Via " + viaHeader + " different than outbound SIP Connector picked by the container " + sipConnector + " , updating it");
public int getRemotePort() { int port = -1; if(getTransaction() != null) { if(((SIPTransaction)getTransaction()).getPeerPacketSourceAddress() != null) { port = ((SIPTransaction)getTransaction()).getPeerPacketSourcePort(); } else { port = ((SIPTransaction)getTransaction()).getPeerPort(); } } else { ViaHeader via = (ViaHeader) message.getHeader(ViaHeader.NAME); // https://code.google.com/p/sipservlets/issues/detail?id=137 boolean isExternal = sipFactoryImpl.getSipApplicationDispatcher().isViaHeaderExternal(via); if(message instanceof Request && !isExternal) { // locally generated messages should return -1 as per Javadoc return -1; } if(via != null) { port = via.getPort(); } } if(port<=0) { return 5060; } else { return port; } }