## org.apache.coyote.http11
Class Http11Processor

    java.lang.Object
      org.apache.coyote.http11.Http11Processor

All Implemented Interfaces:
  ActionHook, Processor

public class Http11Processor
extends java.lang.Object
implements Processor, ActionHook

Processes HTTP requests.

Author:
  Remy Maucherat

Field Summary
`protected Adapter` `adapter` Associated adapter.
`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 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 InternalInputBuffer` `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 org.apache.commons.logging.Log` `log` Logger.
`protected int` `maxKeepAliveRequests` Maximum number of Keep-Alive requests to honor.
`protected int` `maxPostSize` Max post size.
`protected org.apache.regexp.RE[]` `noCompressionUserAgents` List of user agents to not use gzip with
`protected InternalOutputBuffer` `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 org.apache.regexp.RE[]` `restrictedUserAgents` List of restricted user agents.
`protected java.net.Socket` `socket` Socket associated with the current connection.
`protected int` `socketBuffer` Socket buffering.
`protected SSLSupport` `sslSupport` SSL information.
`protected boolean` `started` State flag.
`protected ThreadPool` `threadPool` Associated thread pool.
`protected int` `timeout` Maximum timeout on uploads.

Constructor Summary
`Http11Processor()` Default constructor.
`Http11Processor(int headerBufferSize)`

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).
`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` `getMaxKeepAliveRequests()` Return the number of Keep-Alive requests that we will honor.
`int` `getMaxPostSize()` Return the maximum size of a POST which will be buffered in SSL mode.
`Request` `getRequest()` Get the request associated with this processor.
`int` `getSocketBuffer()` Get the socket buffer flag.
`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.
`void` `process(java.io.InputStream input, java.io.OutputStream output)` Process pipelined HTTP requests using the specified input and output streams.
`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` `setMaxKeepAliveRequests(int mkar)` Set the maximum number of Keep-Alive requests to honor.
`void` `setMaxPostSize(int mps)` Set the maximum size of a POST which will be buffered in SSL mode.
`void` `setNoCompressionUserAgents(org.apache.regexp.RE[] 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(org.apache.regexp.RE[] 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` `setSocket(java.net.Socket socket)` Set the socket associated with this HTTP connection.
`void` `setSocketBuffer(int socketBuffer)` Set the socket buffer flag.
`void` `setSSLSupport(SSLSupport sslSupport)` Set the SSL information for this HTTP connection.
`void` `setThreadPool(ThreadPool threadPool)`
`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 org.apache.commons.logging.Log log

  Logger.

### adapter

    protected Adapter adapter

  Associated adapter.

### request

    protected Request request

  Request object.

### response

    protected Response response

  Response object.

### inputBuffer

    protected InternalInputBuffer inputBuffer

  Input.

### outputBuffer

    protected InternalOutputBuffer outputBuffer

  Output.

### started

    protected boolean started

  State flag.

### error

    protected boolean error

  Error flag.

### keepAlive

    protected boolean keepAlive

  Keep-alive.

### http11

    protected boolean http11

  HTTP/1.1 flag.

### http09

    protected boolean http09

  HTTP/0.9 flag.

### 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 org.apache.regexp.RE[] restrictedUserAgents

  List of restricted user agents.

### maxKeepAliveRequests

    protected int maxKeepAliveRequests

  Maximum number of Keep-Alive requests to honor.

### sslSupport

    protected SSLSupport sslSupport

  SSL information.

### socket

    protected java.net.Socket 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.

### maxPostSize

    protected int maxPostSize

  Max post size.

### noCompressionUserAgents

    protected org.apache.regexp.RE[] 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).

### threadPool

    protected ThreadPool threadPool

  Associated thread pool.

Constructor Detail

### Http11Processor

    public Http11Processor()

  Default constructor.

### Http11Processor

    public Http11Processor(int headerBufferSize)

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.

### setThreadPool

    public void setThreadPool(ThreadPool threadPool)

### 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(org.apache.regexp.RE[] 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 .

### 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(org.apache.regexp.RE[] 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.

### setMaxPostSize

    public void setMaxPostSize(int mps)

  Set the maximum size of a POST which will be buffered in SSL mode.

### getMaxPostSize

    public int getMaxPostSize()

  Return the maximum size of a POST which will be buffered in SSL mode.

### setSSLSupport

    public void setSSLSupport(SSLSupport sslSupport)

  Set the SSL information for this HTTP connection.

### setSocket

    public void setSocket(java.net.Socket socket)
                   throws java.io.IOException

  Set the socket associated with this HTTP connection.

  Throws:
    `java.io.IOException`

### 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.

### getRequest

    public Request getRequest()

  Get the request associated with this processor.

  Returns:

### process

    public void process(java.io.InputStream input,
                        java.io.OutputStream output)
                 throws java.io.IOException

  Process pipelined HTTP requests using the specified input and output streams.

  Specified by:
    `process` in interface `Processor`
  Parameters:
    `input` - stream from which the HTTP requests will be read
    `output` - stream which will be used to output the HTTP responses
  Throws:
    `java.io.IOException` - error during an I/O operation

### 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.

  Specified by:
    `setAdapter` in interface `Processor`
  Parameters:
    `adapter` - the new adapter

### getAdapter

    public Adapter getAdapter()

  Get the associated adapter.

  Specified by:
    `getAdapter` in interface `Processor`
  Returns:
    the associated adapter

### 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()

  When committing the response, we have to validate the set of headers, as well as setup the response filters.

### 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.

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