org.apache.coyote.http11

Class Http11Processor

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 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 String
localAddr
The local Host address.
protected 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 RE[]
noCompressionUserAgents
List of user agents to not use gzip with
protected InternalOutputBuffer
outputBuffer
Output.
protected String
remoteAddr
Remote Address associated with the current connection.
protected 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 RE[]
restrictedUserAgents
List of restricted user agents.
protected 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, Object param)
Send an action to the connector.
void
addCompressableMimeType(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(String className)
Add input or output filter.
protected boolean
addInputFilter(InputFilter inputFilters, String encodingName)
Add an input filter to the current request.
void
addNoCompressionUserAgent(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(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.
String[]
findCompressableMimeTypes()
Return the list of restricted user agents.
String[]
findRestrictedUserAgents()
Return the list of restricted user agents.
Adapter
getAdapter()
Get the associated adapter.
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(InputStream input, OutputStream output)
Process pipelined HTTP requests using the specified input and output streams.
void
setAdapter(Adapter adapter)
Set the associated adapter.
void
setCompressableMimeTypes(String compressableMimeTypes)
Set compressable mime-type list List contains users agents separated by ',' : ie: "text/html,text/xml,text/plain"
void
setCompressableMimeTypes(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(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(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(String noCompressionUserAgents)
Set no compression user agent list.
void
setRestrictedUserAgents(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(String restrictedUserAgents)
Set restricted user agent list (which will downgrade the connector to HTTP/1.0 mode).
void
setSSLSupport(SSLSupport sslSupport)
Set the SSL information for this HTTP connection.
void
setSocket(Socket socket)
Set the socket associated with this HTTP connection.
void
setSocketBuffer(int socketBuffer)
Set the socket buffer flag.
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.

Field Details

adapter

protected Adapter adapter
Associated adapter.


compressableMimeTypes

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


compressionLevel

protected int compressionLevel
Allowed compression level.


compressionMinSize

protected int compressionMinSize
Minimum contentsize to make compression.


contentDelimitation

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


disableUploadTimeout

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


error

protected boolean error
Error flag.


expectation

protected boolean expectation
Is there an expectation ?


hostNameC

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


http09

protected boolean http09
HTTP/0.9 flag.


http11

protected boolean http11
HTTP/1.1 flag.


inputBuffer

protected InternalInputBuffer inputBuffer
Input.


keepAlive

protected boolean keepAlive
Keep-alive.


localAddr

protected String localAddr
The local Host address.


localName

protected String localName
Local Host associated with the current connection.


localPort

protected int localPort
Local port to which the socket is connected


log

protected static org.apache.commons.logging.Log log
Logger.


maxKeepAliveRequests

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


maxPostSize

protected int maxPostSize
Max post size.


noCompressionUserAgents

protected RE[] noCompressionUserAgents
List of user agents to not use gzip with


outputBuffer

protected InternalOutputBuffer outputBuffer
Output.


remoteAddr

protected String remoteAddr
Remote Address associated with the current connection.


remoteHost

protected String remoteHost
Remote Host associated with the current connection.


remotePort

protected int remotePort
Remote port to which the socket is connected


request

protected Request request
Request object.


response

protected Response response
Response object.


restrictedUserAgents

protected RE[] restrictedUserAgents
List of restricted user agents.


socket

protected Socket socket
Socket associated with the current connection.


socketBuffer

protected int socketBuffer
Socket buffering.


sslSupport

protected SSLSupport sslSupport
SSL information.


started

protected boolean started
State flag.


threadPool

protected ThreadPool threadPool
Associated thread pool.


timeout

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

Constructor Details

Http11Processor

public Http11Processor()
Default constructor.


Http11Processor

public Http11Processor(int headerBufferSize)

Method Details

action

public void action(ActionCode actionCode,
                   Object param)
Send an action to the connector.
Specified by:
action in interface ActionHook

Parameters:
actionCode - Type of the action
param - Action parameter


addCompressableMimeType

public void addCompressableMimeType(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:


addFilter

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

Parameters:
className - class name of the filter


addInputFilter

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

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


addNoCompressionUserAgent

public void addNoCompressionUserAgent(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


addRestrictedUserAgent

public void addRestrictedUserAgent(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


findBytes

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


findCompressableMimeTypes

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


findRestrictedUserAgents

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


getAdapter

public Adapter getAdapter()
Get the associated adapter.
Specified by:
getAdapter in interface Processor

Returns:
the associated adapter


getCompression

public String getCompression()
Return compression level.


getDisableUploadTimeout

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


getMaxKeepAliveRequests

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


getMaxPostSize

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


getRequest

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

Returns:


getSocketBuffer

public int getSocketBuffer()
Get the socket buffer flag.


getTimeout

public int getTimeout()
Get the upload timeout.


initializeFilters

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


parseHost

public void parseHost(MessageBytes valueMB)
Parse host.


prepareRequest

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


prepareResponse

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


process

public void process(InputStream input,
                    OutputStream output)
            throws 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


setAdapter

public void setAdapter(Adapter adapter)
Set the associated adapter.
Specified by:
setAdapter in interface Processor

Parameters:
adapter - the new adapter


setCompressableMimeTypes

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


setCompressableMimeTypes

public void setCompressableMimeTypes(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).


setCompression

public void setCompression(String compression)
Set compression level.


setCompressionMinSize

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


setDisableUploadTimeout

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


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.


setMaxPostSize

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


setNoCompressionUserAgents

public void setNoCompressionUserAgents(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(String noCompressionUserAgents)
Set no compression user agent list. List contains users agents separated by ',' : ie: "gorilla,desesplorer,tigrus"


setRestrictedUserAgents

public void setRestrictedUserAgents(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(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"


setSSLSupport

public void setSSLSupport(SSLSupport sslSupport)
Set the SSL information for this HTTP connection.


setSocket

public void setSocket(Socket socket)
            throws IOException
Set the socket associated with this HTTP connection.


setSocketBuffer

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


setThreadPool

public void setThreadPool(ThreadPool threadPool)


setTimeout

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


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 B) 2000-2003 Apache Software Foundation. All Rights Reserved.