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 2007/12/10 11:10:21 UTC
svn commit: r602839 -
/mina/trunk/filter-codec-http/src/main/java/org/apache/mina/filter/codec/http/HttpVersionDecodingState.java
Author: trustin
Date: Mon Dec 10 02:10:19 2007
New Revision: 602839
URL: http://svn.apache.org/viewvc?rev=602839&view=rev
Log:
* Improved HttpVersionDecodingState to throw ProtocolDecoderException even if it failed to decode the product buffer
* HttpVersionDecodingState doesn't expose READ_PROTOCOL_VERSION state at all anymore
Modified:
mina/trunk/filter-codec-http/src/main/java/org/apache/mina/filter/codec/http/HttpVersionDecodingState.java
Modified: mina/trunk/filter-codec-http/src/main/java/org/apache/mina/filter/codec/http/HttpVersionDecodingState.java
URL: http://svn.apache.org/viewvc/mina/trunk/filter-codec-http/src/main/java/org/apache/mina/filter/codec/http/HttpVersionDecodingState.java?rev=602839&r1=602838&r2=602839&view=diff
==============================================================================
--- mina/trunk/filter-codec-http/src/main/java/org/apache/mina/filter/codec/http/HttpVersionDecodingState.java (original)
+++ mina/trunk/filter-codec-http/src/main/java/org/apache/mina/filter/codec/http/HttpVersionDecodingState.java Mon Dec 10 02:10:19 2007
@@ -19,6 +19,7 @@
*/
package org.apache.mina.filter.codec.http;
+import java.nio.charset.CharacterCodingException;
import java.nio.charset.CharsetDecoder;
import org.apache.mina.common.IoBuffer;
@@ -41,9 +42,20 @@
@Override
protected DecodingState finishDecode(IoBuffer product,
ProtocolDecoderOutput out) throws Exception {
- String versionStr = product.getString(asciiDecoder);
- HttpVersion version = HttpVersion.valueOf(versionStr);
+ String versionStr = null;
+ HttpVersion version = null;
+ try {
+ versionStr = product.getString(asciiDecoder);
+ version = HttpVersion.valueOf(versionStr);
+ } catch (CharacterCodingException e) {
+ // Will take care down the
+ }
+
if (version == null) {
+ if (versionStr != null) {
+ versionStr = product.getHexDump();
+ }
+
HttpCodecUtils.throwDecoderException(
"Unsupported HTTP version: " + versionStr,
HttpResponseStatus.HTTP_VERSION_NOT_SUPPORTED);
@@ -60,7 +72,12 @@
public DecodingState decode(IoBuffer in, ProtocolDecoderOutput out)
throws Exception {
- return READ_PROTOCOL_VERSION.decode(in, out);
+ DecodingState nextState = READ_PROTOCOL_VERSION.decode(in, out);
+ if (nextState == READ_PROTOCOL_VERSION) {
+ return this;
+ } else {
+ return nextState;
+ }
}
public DecodingState finishDecode(ProtocolDecoderOutput out)