/**
  * Creates a new REGISTER request.
  *
  * <p>If contact is null, set contact as star * (register all)
  */
 public static Message createRegisterRequest(
     SipProvider sip_provider,
     NameAddress to,
     NameAddress from,
     NameAddress contact,
     String qvalue,
     String icsi) { // modified by mandrajg
   SipURL to_url = to.getAddress();
   SipURL registrar = new SipURL(to_url.getHost(), to_url.getPort());
   String via_addr = sip_provider.getViaAddress();
   int host_port = sip_provider.getPort();
   boolean rport = sip_provider.isRportSet();
   String proto;
   if (to_url.hasTransport()) proto = to_url.getTransport();
   else proto = sip_provider.getDefaultTransport();
   String call_id = sip_provider.pickCallId();
   int cseq = SipProvider.pickInitialCSeq();
   String local_tag = SipProvider.pickTag();
   // String branch=SipStack.pickBranch();
   Message req =
       createRequest(
           SipMethods.REGISTER,
           registrar,
           to,
           from,
           contact,
           proto,
           via_addr,
           host_port,
           rport,
           call_id,
           cseq,
           local_tag,
           null,
           null,
           null,
           qvalue,
           icsi); // modified by mandrajg
   // if no contact, deregister all
   if (contact == null) {
     ContactHeader star = new ContactHeader(); // contact is *
     req.setContactHeader(star);
     req.setExpiresHeader(new ExpiresHeader(String.valueOf(SipStack.default_expires)));
   }
   return req;
 }
  /**
   * Creates a SIP request message. Where
   *
   * <UL>
   *   <LI>via address and port are taken from SipProvider
   *   <LI>transport protocol is taken from request-uri (if transport parameter is present) or the
   *       default transport for the SipProvider is used.
   * </UL>
   *
   * @param sip_provider the SipProvider used to fill the Via field
   * @see
   *     #createRequest(String,SipURL,NameAddress,NameAddress,NameAddress,String,String,int,String,long,String,String,String,String)
   */
  public static Message createRequest(
      SipProvider sip_provider,
      String method,
      SipURL request_uri,
      NameAddress to,
      NameAddress from,
      NameAddress contact,
      String call_id,
      long cseq,
      String local_tag,
      String remote_tag,
      String branch,
      String body,
      String icsi) { // modified by mandrajg
    String via_addr = sip_provider.getViaAddress();
    int host_port = sip_provider.getPort();
    boolean rport = sip_provider.isRportSet();
    String proto;
    if (request_uri.hasTransport()) proto = request_uri.getTransport();
    else proto = sip_provider.getDefaultTransport();

    return createRequest(
        method,
        request_uri,
        to,
        from,
        contact,
        proto,
        via_addr,
        host_port,
        rport,
        call_id,
        cseq,
        local_tag,
        remote_tag,
        branch,
        body,
        null,
        icsi); // modified by mandrajg
  }
예제 #3
0
  SocketAddress getDestinationAddress(final Message message, final JID sender) {

    if (message.getSendTo() != null) {
      log.debug("Using sendTo Value for: " + message.toString());
      return message.getSendTo();
    }

    final SipAccount sipAccount = sipAccountProvider.getSipAccount(sender);
    if (sipAccount != null) {
      log.debug("Using sipAccount Value for: " + message.toString());
      final SocketAddress result =
          CachedAddressResolver.getInstance().getSocketAddress(sipAccount.getOutboundproxy());
      message.setSendTo(result);
      return result;
    }

    if (message.getToHeader() != null) {
      log.debug("Using message Header Value for: " + message.toString());
      SipURL sipUrl =
          message.getContactHeader() != null
              ? message.getContactHeader().getNameAddress().getAddress()
              : null;
      if (sipUrl == null) {
        if (message.isRequest()) {
          sipUrl = message.getFromHeader().getNameAddress().getAddress();
        } else {
          sipUrl = message.getFromHeader().getNameAddress().getAddress();
        }
      }
      final SocketAddress result =
          CachedAddressResolver.getInstance()
              .getSIPSocketAddress(sipUrl.getHost(), sipUrl.getPort());
      message.setSendTo(result);
      return result;
    }

    return null;
  }
 /** Creates an ACK request for a non-2xx response */
 public static Message createNon2xxAckRequest(
     SipProvider sip_provider, Message method, Message resp) {
   SipURL request_uri = method.getRequestLine().getAddress();
   FromHeader from = method.getFromHeader();
   ToHeader to = resp.getToHeader();
   String via_addr = sip_provider.getViaAddress();
   int host_port = sip_provider.getPort();
   boolean rport = sip_provider.isRportSet();
   String proto;
   if (request_uri.hasTransport()) proto = request_uri.getTransport();
   else proto = sip_provider.getDefaultTransport();
   String branch = method.getViaHeader().getBranch();
   NameAddress contact = null;
   Message ack =
       createRequest(
           SipMethods.ACK,
           request_uri,
           to.getNameAddress(),
           from.getNameAddress(),
           contact,
           proto,
           via_addr,
           host_port,
           rport,
           method.getCallIdHeader().getCallId(),
           method.getCSeqHeader().getSequenceNumber(),
           from.getParameter("tag"),
           to.getParameter("tag"),
           branch,
           null,
           null,
           null); // modified by mandrajg
   ack.removeExpiresHeader();
   if (method.hasRouteHeader()) ack.setRoutes(method.getRoutes());
   return ack;
 }
예제 #5
0
파일: SipURL.java 프로젝트: jptien/ims-v1
 /** Indicates whether some other Object is "equal to" this URL */
 @Override
 public boolean equals(Object obj) {
   SipURL newurl = (SipURL) obj;
   return url.toString().equals(newurl.toString());
 }
예제 #6
0
 /** Indicates whether some other Object is "equal to" this NameAddress */
 public boolean equals(Object obj) {
   NameAddress naddr = (NameAddress) obj;
   return url.equals(naddr.getAddress());
 }