private void handlerRequest() throws IOException
void handlerRequest() throws IOException
    private void handlerRequest() throws IOException    {        if (_server != null)        {            boolean retry = false;            boolean error = false;            String threadName=null;            try            {                // TODO try to do this lazily or more efficiently                String info=URIUtil.canonicalPath(_uri.getDecodedPath());                if (info==null)                    throw new HttpException(400);                _request.setPathInfo(info);                                if (_out!=null)                    _out.reopen();                                if (Log.isDebugEnabled())                {                    threadName=Thread.currentThread().getName();                    Thread.currentThread().setName(threadName+" - "+_uri);                }                                _connector.customize(_endp, _request);                                _server.handle(this);            }            catch (RetryRequest r)            {                Log.ignore(r);                retry = true;            }            catch (EofException e)            {                Log.ignore(e);                error=true;            }            catch (ServletException e)            {                Log.warn(e);                _generator.sendError(500, null, null, true);            }            catch (HttpException e)            {                Log.debug(e);                _response.sendError(e.getStatus(), e.getReason());            }            finally            {                if (threadName!=null)                    Thread.currentThread().setName(threadName);                                if (!retry)                {                    if (_request.getContinuation()!=null && _request.getContinuation().isPending())                    {                        Log.debug("continuation still pending {}");                        _request.getContinuation().reset();                    }                                        if (!error)                     {                        if (!_response.isCommitted() && _response.getStatus()<0)                            _response.sendError(HttpServletResponse.SC_NOT_FOUND);                        _response.complete();                        while (!_generator.isComplete() && _endp.isOpen())                        {                            _generator.complete();                            if (!_generator.isComplete() && !_endp.isBlocking())                            {                                _endp.blockWritable(_connector.getMaxIdleTime());                                _generator.complete();                            }                        }                    }                }            }        }    }