contactHeader.setParameter("transport", "tls");
	public void init() {		SipFactory sipFactory = null;		sipStack = null;		sipFactory = SipFactory.getInstance();		sipFactory.setPathName("gov.nist");		Properties properties = new Properties();		// If you want to try TCP transport change the following to		String transport = "tls";		String peerHostPort = "127.0.0.1:5071";		properties.setProperty("javax.sip.IP_ADDRESS", "127.0.0.1");		properties.setProperty(			"javax.sip.OUTBOUND_PROXY", 			peerHostPort + "/" + transport);		// If you want to use UDP then uncomment this.		//properties.setProperty(		//	"javax.sip.ROUTER_PATH",		//	"examples.shootistTLS.MyRouter");		properties.setProperty("javax.sip.STACK_NAME", "shootist");		properties.setProperty("javax.sip.RETRANSMISSION_FILTER", 				"on");		// The following properties are specific to nist-sip		// and are not necessarily part of any other jain-sip		// implementation.		// You can set a max message size for tcp transport to 		// guard against denial of service attack.		properties.setProperty("gov.nist.javax.sip.MAX_MESSAGE_SIZE", 					"1048576");		properties.setProperty(			"gov.nist.javax.sip.DEBUG_LOG",			"shootistdebug.txt");		properties.setProperty(			"gov.nist.javax.sip.SERVER_LOG",			"shootistlog.txt");		// Drop the client connection after we are done with the transaction.		properties.setProperty("gov.nist.javax.sip.CACHE_CLIENT_CONNECTIONS", "false");		// Set to 0 in your production code for max speed.		// You need  16 for logging traces. 32 for debug + traces.		// Your code will limp at 32 but it is best for debugging.		properties.setProperty("gov.nist.javax.sip.TRACE_LEVEL", "32");		try {			// Create SipStack object			sipStack = sipFactory.createSipStack(properties);			System.out.println("createSipStack " + sipStack);		} catch (PeerUnavailableException e) {			// could not find			// gov.nist.jain.protocol.ip.sip.SipStackImpl			// in the classpath			e.printStackTrace();			System.err.println(e.getMessage());			System.exit(0);		}		try {			headerFactory = sipFactory.createHeaderFactory();			addressFactory = sipFactory.createAddressFactory();			messageFactory = sipFactory.createMessageFactory();			Shootist listener = this;			tlsListeningPoint = sipStack.createListeningPoint								(5061, "tls");			tlsProvider = sipStack.createSipProvider(tlsListeningPoint);			tlsProvider.addSipListener(listener);			SipProvider sipProvider = tlsProvider;			String fromName = "BigGuy";			String fromSipAddress = "here.com";			String fromDisplayName = "The Master Blaster";			String toSipAddress = "there.com";			String toUser = "LittleGuy";			String toDisplayName = "The Little Blister";			// create >From Header			SipURI fromAddress =				addressFactory.createSipURI(fromName, fromSipAddress);			Address fromNameAddress = addressFactory.createAddress(fromAddress);			fromNameAddress.setDisplayName(fromDisplayName);			FromHeader fromHeader =				headerFactory.createFromHeader(fromNameAddress, "12345");			// create To Header			SipURI toAddress =				addressFactory.createSipURI(toUser, toSipAddress);			Address toNameAddress = addressFactory.createAddress(toAddress);			toNameAddress.setDisplayName(toDisplayName);			ToHeader toHeader =				headerFactory.createToHeader(toNameAddress, null);			// create Request URI			SipURI requestURI =				addressFactory.createSipURI(toUser, peerHostPort);			// Create ViaHeaders			ArrayList viaHeaders = new ArrayList();			int port = sipProvider.getListeningPoint().getPort();			ViaHeader viaHeader =				headerFactory.createViaHeader(					sipStack.getIPAddress(),					sipProvider.getListeningPoint().getPort(),					transport,					null);			// add via headers			viaHeaders.add(viaHeader);			// Create ContentTypeHeader			ContentTypeHeader contentTypeHeader =				headerFactory.createContentTypeHeader("application", "sdp");			// Create a new CallId header			CallIdHeader callIdHeader = sipProvider.getNewCallId();			// Create a new Cseq header			CSeqHeader cSeqHeader =				headerFactory.createCSeqHeader(1, Request.INVITE);			// Create a new MaxForwardsHeader			MaxForwardsHeader maxForwards =				headerFactory.createMaxForwardsHeader(70);			// Create the request.			Request request =				messageFactory.createRequest(					requestURI,					Request.INVITE,					callIdHeader,					cSeqHeader,					fromHeader,					toHeader,					viaHeaders,					maxForwards);			// Create contact headers			String host = sipStack.getIPAddress();			SipURI contactUrl = addressFactory.createSipURI(fromName, host);			contactUrl.setPort(tlsListeningPoint.getPort());			// Create the contact name address.			SipURI contactURI = addressFactory.createSipURI(fromName, host);			contactURI.setPort(sipProvider.getListeningPoint().getPort());			Address contactAddress = addressFactory.createAddress(contactURI);			// Add the contact address.			contactAddress.setDisplayName(fromName);			contactHeader =				headerFactory.createContactHeader(contactAddress);			contactHeader.setParameter("transport", "tls");			request.addHeader(contactHeader);			// Add the extension header.			Header extensionHeader =				headerFactory.createHeader("My-Header", "my header value");			request.addHeader(extensionHeader);			String sdpData =				"v=0\r\n"					+ "o=4855 13760799956958020 13760799956958020"					+ " IN IP4  129.6.55.78\r\n"					+ "s=mysession session\r\n"					+ "p=+46 8 52018010\r\n"					+ "c=IN IP4  129.6.55.78\r\n"					+ "t=0 0\r\n"					+ "m=audio 6022 RTP/AVP 0 4 18\r\n"					+ "a=rtpmap:0 PCMU/8000\r\n"					+ "a=rtpmap:4 G723/8000\r\n"					+ "a=rtpmap:18 G729A/8000\r\n"					+ "a=ptime:20\r\n";			byte[]  contents = sdpData.getBytes();			//byte[]  contents = sdpBuff.toString().getBytes();			request.setContent(contents, contentTypeHeader);			extensionHeader =				headerFactory.createHeader(					"My-Other-Header",					"my new header value ");			request.addHeader(extensionHeader);			Header callInfoHeader =				headerFactory.createHeader(					"Call-Info",					"<http://www.antd.nist.gov>");			request.addHeader(callInfoHeader);			// Create the client transaction.			listener.inviteTid = sipProvider.getNewClientTransaction(request);			// send the request out.			listener.inviteTid.sendRequest();		} catch (Exception ex) {			System.out.println(ex.getMessage());			ex.printStackTrace();			usage();		}	}