You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by tr...@apache.org on 2008/01/15 05:41:34 UTC
svn commit: r612014 - in
/mina/trunk/filter-codec-http/src/main/java/org/apache/mina/filter/codec/http:
HttpHeaderDecodingState.java HttpRequestDecodingState.java
Author: trustin
Date: Mon Jan 14 20:41:31 2008
New Revision: 612014
URL: http://svn.apache.org/viewvc?rev=612014&view=rev
Log:
Related issue: DIRMINA-505 (OOM errors when handling badly formed HTTP requests)
* Collections created by all http decoding state are cleaned up when the state is destroyed.
Modified:
mina/trunk/filter-codec-http/src/main/java/org/apache/mina/filter/codec/http/HttpHeaderDecodingState.java
mina/trunk/filter-codec-http/src/main/java/org/apache/mina/filter/codec/http/HttpRequestDecodingState.java
Modified: mina/trunk/filter-codec-http/src/main/java/org/apache/mina/filter/codec/http/HttpHeaderDecodingState.java
URL: http://svn.apache.org/viewvc/mina/trunk/filter-codec-http/src/main/java/org/apache/mina/filter/codec/http/HttpHeaderDecodingState.java?rev=612014&r1=612013&r2=612014&view=diff
==============================================================================
--- mina/trunk/filter-codec-http/src/main/java/org/apache/mina/filter/codec/http/HttpHeaderDecodingState.java (original)
+++ mina/trunk/filter-codec-http/src/main/java/org/apache/mina/filter/codec/http/HttpHeaderDecodingState.java Mon Jan 14 20:41:31 2008
@@ -21,7 +21,7 @@
import java.nio.charset.CharsetDecoder;
import java.util.ArrayList;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -49,10 +49,8 @@
private final CharsetDecoder defaultDecoder =
HttpCodecUtils.DEFAULT_CHARSET.newDecoder();
- private Map<String, List<String>> headers = new HashMap<String, List<String>>();
-
+ private Map<String, List<String>> headers;
private String lastHeaderName;
-
private StringBuilder lastHeaderValue;
HttpHeaderDecodingState() {
@@ -61,11 +59,15 @@
@Override
protected DecodingState init() throws Exception {
+ headers = new LinkedHashMap<String, List<String>>();
return FIND_EMPTY_LINE;
}
@Override
protected void destroy() throws Exception {
+ headers = null;
+ lastHeaderName = null;
+ lastHeaderValue = null;
}
private final DecodingState FIND_EMPTY_LINE = new CrLfDecodingState() {
@@ -74,8 +76,6 @@
ProtocolDecoderOutput out) throws Exception {
if (foundCRLF) {
out.write(headers);
- // Reset the state.
- headers = new HashMap<String, List<String>>();
return null;
} else {
return READ_HEADER_NAME;
@@ -83,8 +83,8 @@
}
};
- private final DecodingState READ_HEADER_NAME = new ConsumeToTerminatorDecodingState(
- (byte) ':') {
+ private final DecodingState READ_HEADER_NAME =
+ new ConsumeToTerminatorDecodingState((byte) ':') {
@Override
protected DecodingState finishDecode(IoBuffer product,
ProtocolDecoderOutput out) throws Exception {
Modified: mina/trunk/filter-codec-http/src/main/java/org/apache/mina/filter/codec/http/HttpRequestDecodingState.java
URL: http://svn.apache.org/viewvc/mina/trunk/filter-codec-http/src/main/java/org/apache/mina/filter/codec/http/HttpRequestDecodingState.java?rev=612014&r1=612013&r2=612014&view=diff
==============================================================================
--- mina/trunk/filter-codec-http/src/main/java/org/apache/mina/filter/codec/http/HttpRequestDecodingState.java (original)
+++ mina/trunk/filter-codec-http/src/main/java/org/apache/mina/filter/codec/http/HttpRequestDecodingState.java Mon Jan 14 20:41:31 2008
@@ -67,6 +67,7 @@
@Override
protected void destroy() throws Exception {
+ request = null;
}
private final DecodingState SKIP_EMPTY_LINES = new CrLfDecodingState() {