Exemplo n.º 1
0
  /**
   * Utility method to create a hop from a SIP URI
   *
   * @param sipUri
   * @return
   */
  private final Hop createHop(SipURI sipUri, Request request) {
    // always use TLS when secure
    String transport = sipUri.isSecure() ? SIPConstants.TLS : sipUri.getTransportParam();
    if (transport == null) {
      // @see issue 131
      ViaHeader via = (ViaHeader) request.getHeader(ViaHeader.NAME);
      transport = via.getTransport();
    }

    // sipUri.removeParameter("transport");

    int port;
    if (sipUri.getPort() != -1) {
      port = sipUri.getPort();
    } else {
      if (transport.equalsIgnoreCase(SIPConstants.TLS)) port = 5061;
      else port = 5060; // TCP or UDP
    }
    String host = sipUri.getMAddrParam() != null ? sipUri.getMAddrParam() : sipUri.getHost();
    AddressResolver addressResolver = this.sipStack.getAddressResolver();
    return addressResolver.resolveAddress(new HopImpl(host, port, transport));
  }