/** * 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 }
/** 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; }