public void handleRequest(SipRequest request) throws SipException, IOException
{
accessed();
Proxy proxy = null;
if (request.isInitial())
{
if (Log.isDebugEnabled())
Log.debug("initial request {} for session {}", request.getRequestLine(), this);
_localParty = (NameAddr) request.to().clone();
_remoteParty = (NameAddr) request.from().clone();
_callId = request.getCallId();
}
else
{
if (Log.isDebugEnabled())
Log.debug("subsequent request {} for session {}", request.getRequestLine(), this);
if (isUA())
{
_ua.handleRequest(request);
if (request.isHandled())
return;
}
else if (isProxy())
{
try
{
proxy = request.getProxy();
}
catch (TooManyHopsException e)
{
throw new SipException(SipServletResponse.SC_TOO_MANY_HOPS);
}
}
}
invokeServlet(request);
if (proxy != null && !request.isCancel())
proxy.proxyTo(request.getRequestURI());
}