public void processInvite(RequestEvent requestEvent, ServerTransaction serverTransaction) {
SipProvider sipProvider = (SipProvider) requestEvent.getSource();
Request request = requestEvent.getRequest();
try {
// logger.info("shootme: " + request);
ServerTransaction st = requestEvent.getServerTransaction();
int finalResponse;
logger.info("Got an INVITE " + request + " serverTx = " + st);
if (st == null) {
st = sipProvider.getNewServerTransaction(request);
logger.info("Server transaction created!" + request);
logger.info("Dialog = " + st.getDialog());
if (st.getDialog().getApplicationData() == null) {
st.getDialog().setApplicationData(new ApplicationData());
}
finalResponse = 200;
} else {
// If Server transaction is not null, then
// this is a re-invite.
logger.info("This is a RE INVITE ");
this.reInviteCount++;
ReInviteBusyTest.assertSame("Dialog mismatch ", st.getDialog(), this.dialog);
finalResponse = Response.BUSY_HERE;
}
logger.info("shootme: got an Invite sending " + finalResponse);
Response response = protocolObjects.messageFactory.createResponse(finalResponse,
request);
ToHeader toHeader = (ToHeader) response.getHeader(ToHeader.NAME);
toHeader.setTag("4321");
Address address = protocolObjects.addressFactory.createAddress("Shootme <sip:"
+ myAddress + ":" + myPort + ">");
ContactHeader contactHeader = protocolObjects.headerFactory
.createContactHeader(address);
response.addHeader(contactHeader);
// Thread.sleep(5000);
logger.info("got a server tranasaction " + st);
byte[] content = request.getRawContent();
if (content != null) {
ContentTypeHeader contentTypeHeader = protocolObjects.headerFactory
.createContentTypeHeader("application", "sdp");
response.setContent(content, contentTypeHeader);
}
dialog = st.getDialog();
if (dialog != null) {
logger.info("Dialog " + dialog);
logger.info("Dialog state " + dialog.getState());
}
st.sendResponse(response);
response = protocolObjects.messageFactory.createResponse(finalResponse, request);
toHeader = (ToHeader) response.getHeader(ToHeader.NAME);
toHeader.setTag("4321");
// Application is supposed to set.
response.addHeader(contactHeader);
st.sendResponse(response);
logger.info("TxState after sendResponse = " + st.getState());
this.inviteTid = st;
} catch (Exception ex) {
String s = "unexpected exception";
logger.error(s, ex);