transaction's block (returned by getBlock()) is never notified upon receiving any responses
and thus this line in SipCall.java always hangs
EventObject response_event = parent.waitResponse(transaction, timeout);
problem seems to be in SipSession::processResponse() as it returns prematurely here:
if (listener != null)
{
listener.processEvent(response);
**return;**
}
// if no listener, use the default blocking mechanism
synchronized (sip_trans.getBlock())
{
sip_trans.getEvents().addLast(response);
sip_trans.getBlock().notifyEvent();
}