Index: connectors/jk/java/org/apache/jk/common/ChannelSocket.java =================================================================== --- connectors/jk/java/org/apache/jk/common/ChannelSocket.java (wersja 781361) +++ connectors/jk/java/org/apache/jk/common/ChannelSocket.java (wersja 781362) @@ -46,6 +46,7 @@ import org.apache.coyote.Request; import org.apache.coyote.RequestGroupInfo; import org.apache.coyote.RequestInfo; +import org.apache.coyote.ActionCode; import org.apache.tomcat.util.threads.ThreadPool; import org.apache.tomcat.util.threads.ThreadPoolRunnable; @@ -703,6 +704,7 @@ status= this.invoke( recv, ep ); if( status!= JkHandler.OK ) { log.warn("processCallbacks status " + status ); + ep.action(ActionCode.ACTION_CLOSE, ep.getRequest().getResponse()); break; } } Index: connectors/jk/java/org/apache/jk/common/HandlerRequest.java =================================================================== --- connectors/jk/java/org/apache/jk/common/HandlerRequest.java (wersja 781361) +++ connectors/jk/java/org/apache/jk/common/HandlerRequest.java (wersja 781362) @@ -265,8 +265,16 @@ ((Request)ep.getRequest()).unparsedURI()); } } catch( Exception ex ) { + /* If we are here it is because we have a bad header or something like that */ log.error( "Error decoding request ", ex ); msg.dump( "Incomming message"); + Response res=ep.getRequest().getResponse(); + if ( res==null ) { + res=new Response(); + ep.getRequest().setResponse(res); + } + res.setMessage("Bad Request"); + res.setStatus(400); return ERROR; } Index: connectors/jk/java/org/apache/jk/common/ChannelNioSocket.java =================================================================== --- connectors/jk/java/org/apache/jk/common/ChannelNioSocket.java (wersja 781361) +++ connectors/jk/java/org/apache/jk/common/ChannelNioSocket.java (wersja 781362) @@ -56,6 +56,7 @@ import org.apache.coyote.Request; import org.apache.coyote.RequestGroupInfo; import org.apache.coyote.RequestInfo; +import org.apache.coyote.ActionCode; import org.apache.tomcat.util.threads.ThreadPool; import org.apache.tomcat.util.threads.ThreadPoolRunnable; @@ -854,6 +855,7 @@ status= invoke( recv, ep ); if( status != JkHandler.OK ) { log.warn("processCallbacks status " + status ); + ep.action(ActionCode.ACTION_CLOSE, ep.getRequest().getResponse()); return false; } synchronized(this) {