Use more appropriate exception so a bad request triggers a 400 response
diff --git a/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java b/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java
index 57637f8..fb6df01 100644
--- a/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java
+++ b/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java
@@ -24,6 +24,7 @@
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.coyote.BadRequestException;
 import org.apache.coyote.InputBuffer;
 import org.apache.coyote.Request;
 import org.apache.coyote.http11.Constants;
@@ -162,7 +163,7 @@
 
         if (remaining <= 0) {
             if (!parseChunkHeader()) {
-                throwIOException(sm.getString("chunkedInputFilter.invalidHeader"));
+                throwBadRequestException(sm.getString("chunkedInputFilter.invalidHeader"));
             }
             if (endChunk) {
                 parseEndChunk();
@@ -174,7 +175,7 @@
 
         if (readChunk == null || readChunk.position() >= readChunk.limit()) {
             if (readBytes() < 0) {
-                throwIOException(sm.getString("chunkedInputFilter.eos"));
+                throwEOFException(sm.getString("chunkedInputFilter.eos"));
             }
         }
 
@@ -229,7 +230,7 @@
         while ((read = doRead(this)) >= 0) {
             swallowed += read;
             if (maxSwallowSize > -1 && swallowed > maxSwallowSize) {
-                throwIOException(sm.getString("inputFilter.maxSwallow"));
+                throwBadRequestException(sm.getString("inputFilter.maxSwallow"));
             }
         }
 
@@ -367,7 +368,7 @@
                 // validated. Currently it is simply ignored.
                 extensionSize++;
                 if (maxExtensionSize > -1 && extensionSize > maxExtensionSize) {
-                    throwIOException(sm.getString("chunkedInputFilter.maxExtension"));
+                    throwBadRequestException(sm.getString("chunkedInputFilter.maxExtension"));
                 }
             }
 
@@ -406,23 +407,23 @@
         while (!eol) {
             if (readChunk == null || readChunk.position() >= readChunk.limit()) {
                 if (readBytes() <= 0) {
-                    throwIOException(sm.getString("chunkedInputFilter.invalidCrlfNoData"));
+                    throwBadRequestException(sm.getString("chunkedInputFilter.invalidCrlfNoData"));
                 }
             }
 
             byte chr = readChunk.get(readChunk.position());
             if (chr == Constants.CR) {
                 if (crfound) {
-                    throwIOException(sm.getString("chunkedInputFilter.invalidCrlfCRCR"));
+                    throwBadRequestException(sm.getString("chunkedInputFilter.invalidCrlfCRCR"));
                 }
                 crfound = true;
             } else if (chr == Constants.LF) {
                 if (!tolerant && !crfound) {
-                    throwIOException(sm.getString("chunkedInputFilter.invalidCrlfNoCR"));
+                    throwBadRequestException(sm.getString("chunkedInputFilter.invalidCrlfNoCR"));
                 }
                 eol = true;
             } else {
-                throwIOException(sm.getString("chunkedInputFilter.invalidCrlf"));
+                throwBadRequestException(sm.getString("chunkedInputFilter.invalidCrlf"));
             }
 
             readChunk.position(readChunk.position() + 1);
@@ -499,9 +500,9 @@
                 colon = true;
             } else if (!HttpParser.isToken(chr)) {
                 // Non-token characters are illegal in header names
-                throwIOException(sm.getString("chunkedInputFilter.invalidTrailerHeaderName"));
+                throwBadRequestException(sm.getString("chunkedInputFilter.invalidTrailerHeaderName"));
             } else if (trailingHeaders.getEnd() >= trailingHeaders.getLimit()) {
-                throwIOException(sm.getString("chunkedInputFilter.maxTrailer"));
+                throwBadRequestException(sm.getString("chunkedInputFilter.maxTrailer"));
             } else {
                 trailingHeaders.append(chr);
             }
@@ -540,7 +541,7 @@
                     // limit placed on trailing header size
                     int newlimit = trailingHeaders.getLimit() -1;
                     if (trailingHeaders.getEnd() > newlimit) {
-                        throwIOException(sm.getString("chunkedInputFilter.maxTrailer"));
+                        throwBadRequestException(sm.getString("chunkedInputFilter.maxTrailer"));
                     }
                     trailingHeaders.setLimit(newlimit);
                 } else {
@@ -616,9 +617,9 @@
     }
 
 
-    private void throwIOException(String msg) throws IOException {
+    private void throwBadRequestException(String msg) throws IOException {
         error = true;
-        throw new IOException(msg);
+        throw new BadRequestException(msg);
     }