}
public void processResponse(ResponseEvent responseReceivedEvent) {
logger.info("Got a response");
Response response = (Response) responseReceivedEvent.getResponse();
Transaction tid = responseReceivedEvent.getClientTransaction();
if(tid != null) {
logger.info("Response received with client transaction id "
+ tid + ":\n" + response.getStatusCode() +
" cseq = " + response.getHeader(CSeqHeader.NAME) +
" dialog " + tid.getDialog());
} else {
logger.info("Response received with client transaction id "
+ tid + ":\n" + response.getStatusCode() +
" cseq = " + response.getHeader(CSeqHeader.NAME) +
" dialog " + responseReceivedEvent.getDialog());
}
CSeqHeader cseq = (CSeqHeader) response.getHeader( CSeqHeader.NAME );
if (cseq.getMethod().equals(Request.INVITE)) {
try {
sendNotify( response.getStatusCode(), response.getReasonPhrase() );
} catch (Exception e1) {
TestHarness.fail("Failed to send notify, because of " + e1.getMessage());
}
if (response.getStatusCode() >= 200 && response.getStatusCode() < 300) {
try {
Request ack = tid.getDialog().createAck( cseq.getSeqNumber() );
tid.getDialog().sendAck( ack );
// kill it right away
if ( tid.getDialog().getState() != DialogState.TERMINATED ) {
Request bye = tid.getDialog()
.createRequest(Request.BYE);
tid.getDialog().sendRequest(
mySipProvider.getNewClientTransaction(bye));
}
} catch (Exception e) {
logger.error("Caught exception",e);
TestHarness.fail("Failed to send BYE request, because of " + e.getMessage());