/** Creates a CANCEL request. */ public static Message createCancelRequest(Message method, Dialog dialog) { ToHeader to = method.getToHeader(); FromHeader from = method.getFromHeader(); SipURL request_uri = method.getRequestLine().getAddress(); NameAddress contact = method.getContactHeader().getNameAddress(); ViaHeader via = method.getViaHeader(); String host_addr = via.getHost(); int host_port = via.getPort(); boolean rport = via.hasRport(); String proto = via.getProtocol(); String branch = method.getViaHeader().getBranch(); return createRequest( SipMethods.CANCEL, request_uri, to.getNameAddress(), from.getNameAddress(), contact, proto, host_addr, host_port, rport, method.getCallIdHeader().getCallId(), method.getCSeqHeader().getSequenceNumber(), from.getParameter("tag"), to.getParameter("tag"), branch, "", null, null); // modified by mandrajg }
/** * Creates a SIP response message. * * @param req the request message * @param code the response code * @param reason the response reason * @param contact the contact address * @param local_tag the local tag in the 'To' header * @param body the message body */ public static Message createResponse( Message req, int code, String reason, String local_tag, NameAddress contact, String content_type, String body) { Message resp = new Message(); resp.setStatusLine(new StatusLine(code, reason)); resp.setVias(req.getVias()); if (code >= 180 && code < 300 && req.hasRecordRouteHeader()) resp.setRecordRoutes(req.getRecordRoutes()); ToHeader toh = req.getToHeader(); if (local_tag != null) toh.setParameter("tag", local_tag); resp.setToHeader(toh); resp.setFromHeader(req.getFromHeader()); resp.setCallIdHeader(req.getCallIdHeader()); resp.setCSeqHeader(req.getCSeqHeader()); if (contact != null) resp.setContactHeader(new ContactHeader(contact)); // add Server header field if (SipStack.server_info != null) resp.setServerHeader(new ServerHeader(SipStack.server_info)); // if (body!=null) resp.setBody(body); else resp.setBody(""); if (content_type == null) resp.setBody(body); else resp.setBody(content_type, body); // System.out.println("DEBUG: MessageFactory: // response:\n"+resp.toString()); return resp; }
/** 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; }