Apache Tomcat 6.0.53

org.apache.coyote.http11
Class Http11NioProcessor

java.lang.Object
  extended by org.apache.coyote.http11.Http11NioProcessor
All Implemented Interfaces:
ActionHook

public class Http11NioProcessor
extends java.lang.Object
implements ActionHook

Processes HTTP requests.

Author:
Remy Maucherat, Filip Hanik

Field Summary
protected  Adapter adapter
          Associated adapter.
protected  boolean comet
          Comet used.
protected  boolean cometClose
          Closed flag, a Comet async thread can signal for this Nio processor to be closed and recycled instead of waiting for a timeout.
protected  java.lang.String[] compressableMimeTypes
          List of MIMES which could be gzipped
protected  int compressionLevel
          Allowed compression level.
protected  int compressionMinSize
          Minimum contentsize to make compression.
protected  boolean contentDelimitation
          Content delimitator for the request (if false, the connection will be closed at the end of the request).
protected  boolean disableUploadTimeout
          Flag to disable setting a different time-out on uploads.
protected  NioEndpoint endpoint
          Associated endpoint.
protected  boolean error
          Error flag.
protected  boolean expectation
          Is there an expectation ?
protected  char[] hostNameC
          Host name (used to avoid useless B2C conversion on the host name).
protected  boolean http09
          HTTP/0.9 flag.
protected  boolean http11
          HTTP/1.1 flag.
protected  InternalNioInputBuffer inputBuffer
          Input.
protected  boolean keepAlive
          Keep-alive.
protected  java.lang.String localAddr
          The local Host address.
protected  java.lang.String localName
          Local Host associated with the current connection.
protected  int localPort
          Local port to which the socket is connected
protected static Log log
          Logger.
protected  int maxKeepAliveRequests
          Maximum number of Keep-Alive requests to honor.
protected  int maxSavePostSize
          Max save post size.
protected  java.util.regex.Pattern[] noCompressionUserAgents
          List of user agents to not use gzip with
protected  InternalNioOutputBuffer outputBuffer
          Output.
protected  java.lang.String remoteAddr
          Remote Address associated with the current connection.
protected  java.lang.String remoteHost
          Remote Host associated with the current connection.
protected  int remotePort
          Remote port to which the socket is connected
protected  Request request
          Request object.
protected  Response response
          Response object.
protected  java.util.regex.Pattern[] restrictedUserAgents
          List of restricted user agents.
protected  NioEndpoint.SendfileData sendfileData
          Sendfile data.
protected  boolean sendfileInProgress
          Flag that indicates that send file processing is in progress and that the socket should not be returned to the poller (where a poller is used).
protected  java.lang.String server
          Allow a customized the server header for the tin-foil hat folks.
protected static StringManager sm
          The string manager for this package.
protected  NioChannel socket
          Socket associated with the current connection.
protected  int socketBuffer
          Socket buffering.
protected  boolean ssl
          SSL enabled ?
protected  SSLSupport sslSupport
          SSL information.
protected  int timeout
          Maximum timeout on uploads. 5 minutes as in Apache HTTPD server.
 
Constructor Summary
Http11NioProcessor(int rxBufSize, int txBufSize, int maxHttpHeaderSize, NioEndpoint endpoint)
           
 
Method Summary
 void action(ActionCode actionCode, java.lang.Object param)
          Send an action to the connector.
 void addCompressableMimeType(java.lang.String mimeType)
          Add a mime-type which will be compressable The mime-type String will be exactly matched in the response mime-type header .
protected  void addFilter(java.lang.String className)
          Add input or output filter.
protected  boolean addInputFilter(InputFilter[] inputFilters, java.lang.String encodingName)
          Add an input filter to the current request.
 void addNoCompressionUserAgent(java.lang.String userAgent)
          Add user-agent for which gzip compression didn't works The user agent String given will be exactly matched to the user-agent header submitted by the client.
 void addRestrictedUserAgent(java.lang.String userAgent)
          Add restricted user-agent (which will downgrade the connector to HTTP/1.0 mode).
 void endRequest()
           
 NioEndpoint.Handler.SocketState event(SocketStatus status)
          Process pipelined HTTP requests using the specified input and output streams.
protected  int findBytes(ByteChunk bc, byte[] b)
          Specialized utility method: find a sequence of lower case bytes inside a ByteChunk.
 java.lang.String[] findCompressableMimeTypes()
          Return the list of restricted user agents.
 java.lang.String[] findRestrictedUserAgents()
          Return the list of restricted user agents.
 Adapter getAdapter()
          Get the associated adapter.
 java.lang.String getCompression()
          Return compression level.
 boolean getDisableUploadTimeout()
          Get the flag that controls upload time-outs.
 int getMaxCookieCount()
           
 int getMaxKeepAliveRequests()
          Return the number of Keep-Alive requests that we will honor.
 int getMaxSavePostSize()
          Return the maximum size of a POST which will be buffered in SSL mode.
 Request getRequest()
          Get the request associated with this processor.
 java.lang.String getServer()
          Get the server header name.
 int getSocketBuffer()
          Get the socket buffer flag.
 SSLSupport getSslSupport()
           
 int getTimeout()
          Get the upload timeout.
protected  void initializeFilters()
          Initialize standard input and output filters.
 void parseHost(MessageBytes valueMB)
          Parse host.
protected  void prepareRequest()
          After reading the request headers, we have to setup the request filters.
protected  void prepareResponse()
          When committing the response, we have to validate the set of headers, as well as setup the response filters.
 NioEndpoint.Handler.SocketState process(NioChannel socket)
          Process pipelined HTTP requests using the specified input and output streams.
 void recycle()
           
 void setAdapter(Adapter adapter)
          Set the associated adapter.
 void setCompressableMimeTypes(java.lang.String compressableMimeTypes)
          Set compressable mime-type list List contains users agents separated by ',' : ie: "text/html,text/xml,text/plain"
 void setCompressableMimeTypes(java.lang.String[] compressableMimeTypes)
          Set compressable mime-type list (this method is best when used with a large number of connectors, where it would be better to have all of them referenced a single array).
 void setCompression(java.lang.String compression)
          Set compression level.
 void setCompressionMinSize(int compressionMinSize)
          Set Minimum size to trigger compression.
 void setDisableUploadTimeout(boolean isDisabled)
          Set the flag to control upload time-outs.
 void setMaxCookieCount(int maxCookieCount)
           
 void setMaxKeepAliveRequests(int mkar)
          Set the maximum number of Keep-Alive requests to honor.
 void setMaxSavePostSize(int msps)
          Set the maximum size of a POST which will be buffered in SSL mode.
 void setNoCompressionUserAgents(java.util.regex.Pattern[] noCompressionUserAgents)
          Set no compression user agent list (this method is best when used with a large number of connectors, where it would be better to have all of them referenced a single array).
 void setNoCompressionUserAgents(java.lang.String noCompressionUserAgents)
          Set no compression user agent list.
 void setRestrictedUserAgents(java.util.regex.Pattern[] restrictedUserAgents)
          Set restricted user agent list (this method is best when used with a large number of connectors, where it would be better to have all of them referenced a single array).
 void setRestrictedUserAgents(java.lang.String restrictedUserAgents)
          Set restricted user agent list (which will downgrade the connector to HTTP/1.0 mode).
 void setServer(java.lang.String server)
          Set the server header name.
 void setSocketBuffer(int socketBuffer)
          Set the socket buffer flag.
 void setSslSupport(SSLSupport sslSupport)
           
 void setTimeout(int timeouts)
          Set the upload timeout.
protected  boolean statusDropsConnection(int status)
          Determine if we must drop the connection because of the HTTP status code.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

log

protected static Log log
Logger.


sm

protected static StringManager sm
The string manager for this package.


sslSupport

protected SSLSupport sslSupport
SSL information.


adapter

protected Adapter adapter
Associated adapter.


request

protected Request request
Request object.


response

protected Response response
Response object.


inputBuffer

protected InternalNioInputBuffer inputBuffer
Input.


outputBuffer

protected InternalNioOutputBuffer outputBuffer
Output.


error

protected boolean error
Error flag.


keepAlive

protected boolean keepAlive
Keep-alive.


sendfileInProgress

protected boolean sendfileInProgress
Flag that indicates that send file processing is in progress and that the socket should not be returned to the poller (where a poller is used).


http11

protected boolean http11
HTTP/1.1 flag.


http09

protected boolean http09
HTTP/0.9 flag.


sendfileData

protected NioEndpoint.SendfileData sendfileData
Sendfile data.


comet

protected boolean comet
Comet used.


cometClose

protected boolean cometClose
Closed flag, a Comet async thread can signal for this Nio processor to be closed and recycled instead of waiting for a timeout. Closed by HttpServletResponse.getWriter().close()


contentDelimitation

protected boolean contentDelimitation
Content delimitator for the request (if false, the connection will be closed at the end of the request).


expectation

protected boolean expectation
Is there an expectation ?


restrictedUserAgents

protected java.util.regex.Pattern[] restrictedUserAgents
List of restricted user agents.


maxKeepAliveRequests

protected int maxKeepAliveRequests
Maximum number of Keep-Alive requests to honor.


ssl

protected boolean ssl
SSL enabled ?


socket

protected NioChannel socket
Socket associated with the current connection.


remoteAddr

protected java.lang.String remoteAddr
Remote Address associated with the current connection.


remoteHost

protected java.lang.String remoteHost
Remote Host associated with the current connection.


localName

protected java.lang.String localName
Local Host associated with the current connection.


localPort

protected int localPort
Local port to which the socket is connected


remotePort

protected int remotePort
Remote port to which the socket is connected


localAddr

protected java.lang.String localAddr
The local Host address.


timeout

protected int timeout
Maximum timeout on uploads. 5 minutes as in Apache HTTPD server.


disableUploadTimeout

protected boolean disableUploadTimeout
Flag to disable setting a different time-out on uploads.


compressionLevel

protected int compressionLevel
Allowed compression level.


compressionMinSize

protected int compressionMinSize
Minimum contentsize to make compression.


socketBuffer

protected int socketBuffer
Socket buffering.


maxSavePostSize

protected int maxSavePostSize
Max save post size.


noCompressionUserAgents

protected java.util.regex.Pattern[] noCompressionUserAgents
List of user agents to not use gzip with


compressableMimeTypes

protected java.lang.String[] compressableMimeTypes
List of MIMES which could be gzipped


hostNameC

protected char[] hostNameC
Host name (used to avoid useless B2C conversion on the host name).


endpoint

protected NioEndpoint endpoint
Associated endpoint.


server

protected java.lang.String server
Allow a customized the server header for the tin-foil hat folks.

Constructor Detail

Http11NioProcessor

public Http11NioProcessor(int rxBufSize,
                          int txBufSize,
                          int maxHttpHeaderSize,
                          NioEndpoint endpoint)
Method Detail

getCompression

public java.lang.String getCompression()
Return compression level.


setCompression

public void setCompression(java.lang.String compression)
Set compression level.


setCompressionMinSize

public void setCompressionMinSize(int compressionMinSize)
Set Minimum size to trigger compression.


addNoCompressionUserAgent

public void addNoCompressionUserAgent(java.lang.String userAgent)
Add user-agent for which gzip compression didn't works The user agent String given will be exactly matched to the user-agent header submitted by the client.

Parameters:
userAgent - user-agent string

setNoCompressionUserAgents

public void setNoCompressionUserAgents(java.util.regex.Pattern[] noCompressionUserAgents)
Set no compression user agent list (this method is best when used with a large number of connectors, where it would be better to have all of them referenced a single array).


setNoCompressionUserAgents

public void setNoCompressionUserAgents(java.lang.String noCompressionUserAgents)
Set no compression user agent list. List contains users agents separated by ',' : ie: "gorilla,desesplorer,tigrus"


addCompressableMimeType

public void addCompressableMimeType(java.lang.String mimeType)
Add a mime-type which will be compressable The mime-type String will be exactly matched in the response mime-type header .

Parameters:
mimeType - mime-type string

setCompressableMimeTypes

public void setCompressableMimeTypes(java.lang.String[] compressableMimeTypes)
Set compressable mime-type list (this method is best when used with a large number of connectors, where it would be better to have all of them referenced a single array).


setCompressableMimeTypes

public void setCompressableMimeTypes(java.lang.String compressableMimeTypes)
Set compressable mime-type list List contains users agents separated by ',' : ie: "text/html,text/xml,text/plain"


findCompressableMimeTypes

public java.lang.String[] findCompressableMimeTypes()
Return the list of restricted user agents.


addFilter

protected void addFilter(java.lang.String className)
Add input or output filter.

Parameters:
className - class name of the filter

addRestrictedUserAgent

public void addRestrictedUserAgent(java.lang.String userAgent)
Add restricted user-agent (which will downgrade the connector to HTTP/1.0 mode). The user agent String given will be matched via regexp to the user-agent header submitted by the client.

Parameters:
userAgent - user-agent string

setRestrictedUserAgents

public void setRestrictedUserAgents(java.util.regex.Pattern[] restrictedUserAgents)
Set restricted user agent list (this method is best when used with a large number of connectors, where it would be better to have all of them referenced a single array).


setRestrictedUserAgents

public void setRestrictedUserAgents(java.lang.String restrictedUserAgents)
Set restricted user agent list (which will downgrade the connector to HTTP/1.0 mode). List contains users agents separated by ',' : ie: "gorilla,desesplorer,tigrus"


findRestrictedUserAgents

public java.lang.String[] findRestrictedUserAgents()
Return the list of restricted user agents.


setMaxKeepAliveRequests

public void setMaxKeepAliveRequests(int mkar)
Set the maximum number of Keep-Alive requests to honor. This is to safeguard from DoS attacks. Setting to a negative value disables the check.


getMaxKeepAliveRequests

public int getMaxKeepAliveRequests()
Return the number of Keep-Alive requests that we will honor.


setMaxSavePostSize

public void setMaxSavePostSize(int msps)
Set the maximum size of a POST which will be buffered in SSL mode.


getMaxSavePostSize

public int getMaxSavePostSize()
Return the maximum size of a POST which will be buffered in SSL mode.


setDisableUploadTimeout

public void setDisableUploadTimeout(boolean isDisabled)
Set the flag to control upload time-outs.


getDisableUploadTimeout

public boolean getDisableUploadTimeout()
Get the flag that controls upload time-outs.


setSocketBuffer

public void setSocketBuffer(int socketBuffer)
Set the socket buffer flag.


getSocketBuffer

public int getSocketBuffer()
Get the socket buffer flag.


setTimeout

public void setTimeout(int timeouts)
Set the upload timeout.


getTimeout

public int getTimeout()
Get the upload timeout.


setServer

public void setServer(java.lang.String server)
Set the server header name.


getServer

public java.lang.String getServer()
Get the server header name.


getRequest

public Request getRequest()
Get the request associated with this processor.

Returns:
The request

event

public NioEndpoint.Handler.SocketState event(SocketStatus status)
                                      throws java.io.IOException
Process pipelined HTTP requests using the specified input and output streams.

Throws:
java.io.IOException - error during an I/O operation

process

public NioEndpoint.Handler.SocketState process(NioChannel socket)
                                        throws java.io.IOException
Process pipelined HTTP requests using the specified input and output streams.

Throws:
java.io.IOException - error during an I/O operation

endRequest

public void endRequest()

recycle

public void recycle()

action

public void action(ActionCode actionCode,
                   java.lang.Object param)
Send an action to the connector.

Specified by:
action in interface ActionHook
Parameters:
actionCode - Type of the action
param - Action parameter

setAdapter

public void setAdapter(Adapter adapter)
Set the associated adapter.

Parameters:
adapter - the new adapter

setSslSupport

public void setSslSupport(SSLSupport sslSupport)

getMaxCookieCount

public int getMaxCookieCount()

setMaxCookieCount

public void setMaxCookieCount(int maxCookieCount)

getAdapter

public Adapter getAdapter()
Get the associated adapter.

Returns:
the associated adapter

getSslSupport

public SSLSupport getSslSupport()

prepareRequest

protected void prepareRequest()
After reading the request headers, we have to setup the request filters.


parseHost

public void parseHost(MessageBytes valueMB)
Parse host.


prepareResponse

protected void prepareResponse()
                        throws java.io.IOException
When committing the response, we have to validate the set of headers, as well as setup the response filters.

Throws:
java.io.IOException

initializeFilters

protected void initializeFilters()
Initialize standard input and output filters.


addInputFilter

protected boolean addInputFilter(InputFilter[] inputFilters,
                                 java.lang.String encodingName)
Add an input filter to the current request.

Returns:
false if the encoding was not found (which would mean it is unsupported)

findBytes

protected int findBytes(ByteChunk bc,
                        byte[] b)
Specialized utility method: find a sequence of lower case bytes inside a ByteChunk.


statusDropsConnection

protected boolean statusDropsConnection(int status)
Determine if we must drop the connection because of the HTTP status code. Use the same list of codes as Apache/httpd.


Apache Tomcat 6.0.53

Copyright © 2000-2017 Apache Software Foundation. All Rights Reserved.