Refine search
private static Request newRequest() { HttpChannel channel = mock( HttpChannel.class ); Response response = new Response( channel, mock( HttpOutput.class ) ); Request request = new Request( channel, mock( HttpInput.class ) ); when( channel.getRequest() ).thenReturn( request ); when( channel.getResponse() ).thenReturn( response ); return request; }
return true; HttpConfiguration httpConfig = Request.getBaseRequest(request).getHttpChannel().getHttpConfiguration(); if (request.isSecure()) return true; if (httpConfig.getSecurePort() > 0) String scheme = httpConfig.getSecureScheme(); int port = httpConfig.getSecurePort(); String url = URIUtil.newURI(scheme, request.getServerName(), port,request.getRequestURI(),request.getQueryString()); response.setContentLength(0); response.sendRedirect(url); response.sendError(HttpStatus.FORBIDDEN_403,"!Secure"); request.setHandled(true);
@Override protected void handshake(final Runnable handler) throws Exception { /** Infinite timeout because the continuation is never resumed but only completed on close. */ req.getAsyncContext().setTimeout(0L); /** Server sent events headers. */ rsp.setStatus(HttpServletResponse.SC_OK); rsp.setHeader("Connection", "Close"); rsp.setContentType("text/event-stream; charset=utf-8"); rsp.flushBuffer(); HttpChannel channel = rsp.getHttpChannel(); Connector connector = channel.getConnector(); Executor executor = connector.getExecutor(); executor.execute(handler); }
try { final ArmeriaHttpTransport transport = new ArmeriaHttpTransport(req.method()); final HttpChannel httpChannel = new HttpChannel( connector, connector.getHttpConfiguration(), transport); fillRequest(ctx, aReq, httpChannel.getRequest());
@Override public void run() LOG.debug("{} handle enter", this); setCurrentHttpChannel(this); if (LOG.isDebugEnabled()) while (handling && getServer().isRunning()) _request.setHandled(false); _response.getHttpOutput().reopen(); for (HttpConfiguration.Customizer customizer : _configuration.getCustomizers()) customizer.customize(getConnector(),_configuration,_request); getServer().handle(this); _request.setDispatcherType(DispatcherType.ASYNC); getServer().handleAsync(this); _state.error(e); _request.setHandled(true); handleException(e); if (threadName != null && LOG.isDebugEnabled()) Thread.currentThread().setName(threadName); setCurrentHttpChannel(null);
public void handleAsync(HttpChannel<?> connection) throws IOException, ServletException { final HttpChannelState async = connection.getRequest().getHttpChannelState(); final HttpChannelState.AsyncEventState state = async.getAsyncEventState(); final Request baseRequest=connection.getRequest(); final String path=state.getPath(); if (path!=null) { // this is a dispatch with a path ServletContext context=state.getServletContext(); HttpURI uri = new HttpURI(context==null?path:URIUtil.addPaths(context.getContextPath(),path)); baseRequest.setUri(uri); baseRequest.setRequestURI(null); baseRequest.setPathInfo(baseRequest.getRequestURI()); if (uri.getQuery()!=null) baseRequest.mergeQueryString(uri.getQuery()); //we have to assume dispatch path and query are UTF8 } final String target=baseRequest.getPathInfo(); final HttpServletRequest request=(HttpServletRequest)async.getRequest(); final HttpServletResponse response=(HttpServletResponse)async.getResponse(); if (LOG.isDebugEnabled()) { LOG.debug("REQUEST "+target+" on "+connection); handle(target, baseRequest, request, response); LOG.debug("RESPONSE "+target+" "+connection.getResponse().getStatus()); } else handle(target, baseRequest, request, response); }
public void handle(HttpChannel connection) throws IOException, ServletException { final String target=connection.getRequest().getPathInfo(); final Request request=connection.getRequest(); final Response response=connection.getResponse(); if (LOG.isDebugEnabled()) LOG.debug("{} on {}{}{} {} {}{}{}", request.getDispatcherType(), connection, System.lineSeparator(), request.getMethod(), target, request.getProtocol(), System.lineSeparator(), request.getHttpFields()); if (HttpMethod.OPTIONS.is(request.getMethod()) || "*".equals(target)) { if (!HttpMethod.OPTIONS.is(request.getMethod())) response.sendError(HttpStatus.BAD_REQUEST_400); handleOptions(request,response); if (!request.isHandled()) handle(target, request, request, response); } else handle(target, request, request, response); if (LOG.isDebugEnabled()) LOG.debug("RESPONSE for {} h={}{}{} {}{}{}", target, request.isHandled(), System.lineSeparator(), response.getStatus(), response.getReason(), System.lineSeparator(), response.getHttpFields()); }
@Override public void sendError(int code, String message) throws IOException if (isCommitted()) resetBuffer(); _channel.abort(new IOException()); return; case 102: setStatus(code); Request request = _channel.getRequest(); Throwable cause = (Throwable)request.getAttribute(Dispatcher.ERROR_EXCEPTION); if (message==null) code != SC_PARTIAL_CONTENT && code >= SC_OK) ContextHandler.Context context = request.getContext(); ContextHandler contextHandler = context == null ? _channel.getState().getContextHandler() : context.getContextHandler(); request.setAttribute(RequestDispatcher.ERROR_STATUS_CODE, code); request.setAttribute(RequestDispatcher.ERROR_MESSAGE, message); request.setAttribute(RequestDispatcher.ERROR_REQUEST_URI, request.getRequestURI()); request.setAttribute(RequestDispatcher.ERROR_SERVLET_NAME, request.getServletName()); ErrorHandler error_handler = ErrorHandler.getErrorHandler(_channel.getServer(), contextHandler); if (error_handler!=null) error_handler.handle(null, request, request, this);
public void handle(HttpChannel<?> connection) throws IOException, ServletException { final String target=connection.getRequest().getPathInfo(); final Request request=connection.getRequest(); final Response response=connection.getResponse(); if (LOG.isDebugEnabled()) LOG.debug("REQUEST "+target+" on "+connection); if ("*".equals(target)) { handleOptions(request,response); if (!request.isHandled()) handle(target, request, request, response); } else handle(target, request, request, response); if (LOG.isDebugEnabled()) LOG.debug("RESPONSE "+target+" "+connection.getResponse().getStatus()+" handled="+request.isHandled()); }
public void handle(HttpChannel<?> connection) throws IOException, ServletException { final String target=connection.getRequest().getPathInfo(); final Request request=connection.getRequest(); final Response response=connection.getResponse(); if (LOG.isDebugEnabled()) LOG.debug(request.getDispatcherType()+" "+request.getMethod()+" "+target+" on "+connection); if (HttpMethod.OPTIONS.is(request.getMethod()) || "*".equals(target)) { if (!HttpMethod.OPTIONS.is(request.getMethod())) response.sendError(HttpStatus.BAD_REQUEST_400); handleOptions(request,response); if (!request.isHandled()) handle(target, request, request, response); } else handle(target, request, request, response); if (LOG.isDebugEnabled()) LOG.debug("RESPONSE "+target+" "+connection.getResponse().getStatus()+" handled="+request.isHandled()); }
public void handle(HttpChannel channel) throws IOException, ServletException { final String target=channel.getRequest().getPathInfo(); final Request request=channel.getRequest(); final Response response=channel.getResponse(); if (LOG.isDebugEnabled()) LOG.debug("{} {} {} on {}", request.getDispatcherType(), request.getMethod(), target, channel); if (HttpMethod.OPTIONS.is(request.getMethod()) || "*".equals(target)) { if (!HttpMethod.OPTIONS.is(request.getMethod())) response.sendError(HttpStatus.BAD_REQUEST_400); handleOptions(request,response); if (!request.isHandled()) handle(target, request, request, response); } else handle(target, request, request, response); if (LOG.isDebugEnabled()) LOG.debug("handled={} async={} committed={} on {}", request.isHandled(),request.isAsyncStarted(),response.isCommitted(),channel); }
public void handleAsync(HttpChannel connection) throws IOException, ServletException { final HttpChannelState state = connection.getRequest().getHttpChannelState(); final AsyncContextEvent event = state.getAsyncContextEvent(); final Request baseRequest=connection.getRequest(); final String path=event.getPath(); if (path!=null) { // this is a dispatch with a path ServletContext context=event.getServletContext(); String query=baseRequest.getQueryString(); baseRequest.setURIPathQuery(URIUtil.addPaths(context==null?null:context.getContextPath(), path)); HttpURI uri = baseRequest.getHttpURI(); baseRequest.setPathInfo(uri.getDecodedPath()); if (uri.getQuery()!=null) baseRequest.mergeQueryParameters(query,uri.getQuery(), true); //we have to assume dispatch path and query are UTF8 } final String target=baseRequest.getPathInfo(); final HttpServletRequest request=(HttpServletRequest)event.getSuppliedRequest(); final HttpServletResponse response=(HttpServletResponse)event.getSuppliedResponse(); if (LOG.isDebugEnabled()) { LOG.debug(request.getDispatcherType()+" "+request.getMethod()+" "+target+" on "+connection); handle(target, baseRequest, request, response); LOG.debug("RESPONSE "+target+" "+connection.getResponse().getStatus()); } else handle(target, baseRequest, request, response); }
Throwable quiet = unwrap(failure, QuietException.class); Throwable no_stack = unwrap(failure, BadMessageException.class, IOException.class, TimeoutException.class); if (quiet!=null || !getServer().isRunning()) if (LOG.isDebugEnabled()) LOG.debug(_request.getRequestURI(), failure); LOG.warn("{} {}",_request.getRequestURI(), no_stack.toString()); if (LOG.isDebugEnabled()) LOG.debug(_request.getRequestURI(), failure); LOG.warn("ERROR dispatch failed", failure); minimalErrorResponse(failure);
protected ResponseInfo newResponseInfo() { if (_status == HttpStatus.NOT_SET_000) _status = HttpStatus.OK_200; return new ResponseInfo(_channel.getRequest().getHttpVersion(), _fields, getLongContentLength(), getStatus(), getReason(), _channel.getRequest().isHead()); }
public void onCompleted() { if (LOG.isDebugEnabled()) LOG.debug("COMPLETE for {} written={}",getRequest().getRequestURI(),getBytesWritten()); if (_requestLog!=null ) _requestLog.log(_request, _response); long idleTO=_configuration.getIdleTimeout(); if (idleTO>=0 && getIdleTimeout()!=_oldIdleTimeout) setIdleTimeout(_oldIdleTimeout); notifyComplete(_request); _transport.onCompleted(); }
private MultiParts newMultiParts(ServletInputStream inputStream, String contentType, MultipartConfigElement config, Object object) throws IOException { MultiPartFormDataCompliance compliance = getHttpChannel().getHttpConfiguration().getMultipartFormDataCompliance(); if(LOG.isDebugEnabled()) LOG.debug("newMultiParts {} {}",compliance, this); switch(compliance) { case RFC7578: return new MultiParts.MultiPartsHttpParser(getInputStream(), getContentType(), config, (_context != null?(File)_context.getAttribute("javax.servlet.context.tempdir"):null), this); case LEGACY: default: return new MultiParts.MultiPartsUtilParser(getInputStream(), getContentType(), config, (_context != null?(File)_context.getAttribute("javax.servlet.context.tempdir"):null), this); } }
protected void commit (MetaData.Response info) { _committedMetaData=info; if (LOG.isDebugEnabled()) LOG.debug("COMMIT for {} on {}{}{} {} {}{}{}",getRequest().getRequestURI(),this,System.lineSeparator(), info.getStatus(),info.getReason(),info.getHttpVersion(),System.lineSeparator(), info.getFields()); }
public HttpOutput(HttpChannel<?> channel) { _channel = channel; HttpConfiguration config = channel.getHttpConfiguration(); _bufferSize = config.getOutputBufferSize(); _commitSize = config.getOutputAggregationSize(); if (_commitSize>_bufferSize) { LOG.warn("OutputAggregationSize {} exceeds bufferSize {}",_commitSize,_bufferSize); _commitSize=_bufferSize; } }
if (LOG.isDebugEnabled()) LOG.debug("unhandle {}",toStringLocked()); Scheduler scheduler=_channel.getScheduler(); if (scheduler!=null && _timeoutMs>0 && !_event.hasTimeoutTask()) _event.setTimeoutTask(scheduler.schedule(_event,_timeoutMs,TimeUnit.MILLISECONDS)); _channel.onAsyncWaitForContent();
@Override public void run() { for (AsyncListener listener : listeners) { try { listener.onTimeout(event); } catch(Exception e) { LOG.debug(e); event.addThrowable(e); _channel.getRequest().setAttribute(RequestDispatcher.ERROR_EXCEPTION,event.getThrowable()); break; } } } @Override