/** * Fill the internal buffer using data from the underlying input stream. * * @return false if at end of stream */ @Override protected boolean fill(boolean block) throws IOException, EOFException { return fill(true,block); }
/** * Add an input filter to the current request. * * @return false if the encoding was not found (which would mean it is * unsupported) */ protected boolean addInputFilter(InputFilter[] inputFilters, String encodingName) { if (encodingName.equals("identity")) { // Skip } else if (encodingName.equals("chunked")) { inputBuffer.addActiveFilter(inputFilters[Constants.CHUNKED_FILTER]); contentDelimitation = true; } else { for (int i = 2; i < inputFilters.length; i++) { if (inputFilters[i].getEncodingName().toString().equals(encodingName)) { inputBuffer.addActiveFilter(inputFilters[i]); return true; } } return false; } return true; }
/** * @return true if the input buffer is available */ public boolean isAvailable() { return inputBuffer.available(); }
if (!fill(true,false)) {//parse header headerParsePos = HeaderParsePosition.HEADER_START; return HeaderParseStatus.NEED_MORE_DATA; if (!fill(true,false)) { //parse header return HeaderParseStatus.NEED_MORE_DATA; return skipLine(); return skipLine(); if (!fill(true,false)) {//parse header if (!fill(true,false)) {//parse header if (!fill(true,false)) {//parse header
inputBuffer.setSocket(socket); outputBuffer.setSocket(socket); inputBuffer.setSelectorPool(endpoint.getSelectorPool()); outputBuffer.setSelectorPool(endpoint.getSelectorPool()); socket.getIOChannel().socket().setSoTimeout((int)soTimeout); if (!inputBuffer.parseRequestLine(keptAlive)) { if ( !inputBuffer.parseHeaders() ) { inputBuffer.setSwallowInput(false); endRequest(); inputBuffer.nextRequest(); outputBuffer.nextRequest();
InputFilter[] inputFilters = inputBuffer.getFilters(); ((BufferedInputFilter) inputFilters[Constants.BUFFERED_FILTER]) .setLimit(maxSavePostSize); inputBuffer.addActiveFilter (inputFilters[Constants.BUFFERED_FILTER]); try { request.setAvailable(inputBuffer.available()); } else if (actionCode == ActionCode.COMET_BEGIN) { comet = true;
expectMB = headers.getValue("expect"); if ((expectMB != null) && (expectMB.indexOfIgnoreCase("100-continue", 0) != -1)) { inputBuffer.setSwallowInput(false); expectation = true; InputFilter[] inputFilters = inputBuffer.getFilters(); request.setContentLength(-1); } else { inputBuffer.addActiveFilter(inputFilters[Constants.IDENTITY_FILTER]); contentDelimitation = true; inputBuffer.addActiveFilter(inputFilters[Constants.VOID_FILTER]); contentDelimitation = true;
if ( readSocket(true, false)==0 ) return false; if (!fill(true, false)) //request line parsing return false; if (!fill(true, false)) //request line parsing return false; if (!fill(true,false)) //request line parsing return false; if (!fill(true, false)) //request line parsing return false; if (!fill(true, false)) //request line parsing return false;
return; inputBuffer.setSwallowInput(true); try { outputBuffer.sendAck(); InputFilter[] inputFilters = inputBuffer.getFilters(); ((BufferedInputFilter) inputFilters[Constants.BUFFERED_FILTER]) .setLimit(maxSavePostSize); inputBuffer.addActiveFilter (inputFilters[Constants.BUFFERED_FILTER]); try { internalBuffer.addActiveFilter(savedBody); request.setAvailable(inputBuffer.available()); } else if (actionCode == ActionCode.ACTION_COMET_BEGIN) { comet = true;
public Http11NioProcessor(int maxHttpHeaderSize, NioEndpoint endpoint, int maxTrailerSize) { super(endpoint); inputBuffer = new InternalNioInputBuffer(request, maxHttpHeaderSize); request.setInputBuffer(inputBuffer); outputBuffer = new InternalNioOutputBuffer(response, maxHttpHeaderSize); response.setOutputBuffer(outputBuffer); initializeFilters(maxTrailerSize); }
if (!inputBuffer.parseRequestLine(keptAlive)) { endpoint.setSoTimeout(soTimeout); inputBuffer.parseHeaders(); } catch (IOException e) { error = true; inputBuffer.setSwallowInput(false); if (!event) { pipelined = inputBuffer.nextRequest(); outputBuffer.nextRequest(); inputBuffer.nextRequest(); outputBuffer.nextRequest(); recycle();
/** * Issues a non blocking read * @return int * @throws IOException */ public int nbRead() throws IOException { return readSocket(true,false); }
status = parseHeader(); } while ( status == HeaderParseStatus.HAVE_MORE_HEADERS ); if (status == HeaderParseStatus.DONE) {
Selector selector = null; try { selector = getSelectorPool().get(); } catch ( IOException x ) { NioEndpoint.KeyAttachment att = (NioEndpoint.KeyAttachment)socket.getAttachment(false); if ( att == null ) throw new IOException("Key must be cancelled."); nRead = getSelectorPool().read(socket.getBufHandler().getReadBuffer(),socket,selector,att.getTimeout()); } catch ( EOFException eof ) { nRead = -1; } finally { if ( selector != null ) getSelectorPool().put(selector); socket.getBufHandler().getReadBuffer().flip(); socket.getBufHandler().getReadBuffer().limit(nRead); expand(nRead + pos); socket.getBufHandler().getReadBuffer().get(buf, pos, nRead); lastValid = pos + nRead;
inputBuffer.nextRequest(); outputBuffer.nextRequest(); recycle(); } else if (!event) { endRequest(); boolean pipelined = inputBuffer.nextRequest(); outputBuffer.nextRequest(); recycle();
socket.getBufHandler().getReadBuffer().flip(); socket.getBufHandler().getReadBuffer().limit(nRead); expand(nRead + pos); socket.getBufHandler().getReadBuffer().get(buf, pos, nRead); lastValid = pos + nRead;
@Override protected boolean handleIncompleteRequestLineRead() { // Haven't finished reading the request so keep the socket // open openSocket = true; // Check to see if we have read any of the request line yet if (inputBuffer.getParsingRequestLinePhase() < 2) { if (socket.getLastAccess() > -1 || keptAlive) { // Haven't read the request line and have previously processed a // request. Must be keep-alive. Make sure poller uses keepAlive. socket.setTimeout(endpoint.getKeepAliveTimeout()); } } else { // Started to read request line. Need to keep processor // associated with socket readComplete = false; // Make sure poller uses soTimeout from here onwards socket.setTimeout(endpoint.getSoTimeout()); } if (endpoint.isPaused()) { // 503 - Service unavailable response.setStatus(503); adapter.log(request, response, 0); error = true; } else { return true; } return false; }
inputBuffer.setSocket(socket); outputBuffer.setSocket(socket); inputBuffer.setSelectorPool(endpoint.getSelectorPool()); outputBuffer.setSelectorPool(endpoint.getSelectorPool()); socket.getIOChannel().socket().setSoTimeout((int)soTimeout); if (!inputBuffer.parseRequestLine(keptAlive)) { if (inputBuffer.getParsingRequestLinePhase()<2) { if ( !inputBuffer.parseHeaders() ) { inputBuffer.setSwallowInput(false); endRequest(); inputBuffer.nextRequest(); outputBuffer.nextRequest();
InputFilter[] inputFilters = inputBuffer.getFilters(); ((BufferedInputFilter) inputFilters[Constants.BUFFERED_FILTER]) .setLimit(maxSavePostSize); inputBuffer.addActiveFilter (inputFilters[Constants.BUFFERED_FILTER]); SecureNioChannel sslChannel = (SecureNioChannel) socket.getSocket(); request.setAvailable(inputBuffer.available()); } else if (actionCode == ActionCode.COMET_BEGIN) { comet = true;
if ((expectMB != null) && (expectMB.indexOfIgnoreCase("100-continue", 0) != -1)) { inputBuffer.setSwallowInput(false); expectation = true; InputFilter[] inputFilters = inputBuffer.getFilters(); inputBuffer.addActiveFilter (inputFilters[Constants.IDENTITY_FILTER]); contentDelimitation = true; inputBuffer.addActiveFilter (inputFilters[Constants.VOID_FILTER]); contentDelimitation = true;