You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2007/02/12 19:16:12 UTC

svn commit: r506560 - in /jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/protocol: BufferingHttpServiceHandler.java ThrottlingHttpServiceHandler.java

Author: olegk
Date: Mon Feb 12 10:16:11 2007
New Revision: 506560

URL: http://svn.apache.org/viewvc?view=rev&rev=506560
Log:
HTTPCORE-44: Fixed NPE in BufferingHttpServiceHandler and ThrottlingHttpServiceHandler when request is invalid

Modified:
    jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/protocol/BufferingHttpServiceHandler.java
    jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/protocol/ThrottlingHttpServiceHandler.java

Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/protocol/BufferingHttpServiceHandler.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/protocol/BufferingHttpServiceHandler.java?view=diff&rev=506560&r1=506559&r2=506560
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/protocol/BufferingHttpServiceHandler.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/protocol/BufferingHttpServiceHandler.java Mon Feb 12 10:16:11 2007
@@ -291,9 +291,7 @@
             final HttpException ex) {
 
         HttpRequest request = conn.getHttpRequest();
-        HttpVersion ver = request.getRequestLine().getHttpVersion();
-        HttpResponse response =  this.responseFactory.newHttpResponse(
-                ver, HttpStatus.SC_BAD_REQUEST, conn.getContext());
+        HttpContext context = conn.getContext();
 
         int code = HttpStatus.SC_INTERNAL_SERVER_ERROR;
         if (ex instanceof MethodNotSupportedException) {
@@ -304,7 +302,14 @@
             code = HttpStatus.SC_BAD_REQUEST;
         }
         
-        response.setStatusLine(HttpVersion.HTTP_1_0, code);
+        HttpVersion ver;
+        if (request != null) {
+            ver = request.getRequestLine().getHttpVersion(); 
+        } else {
+            ver = HttpVersion.HTTP_1_0;
+        }
+        HttpResponse response =  this.responseFactory.newHttpResponse(ver, code, context);
+
         byte[] msg = EncodingUtils.getAsciiBytes(ex.getMessage());
         ByteArrayEntity entity = new ByteArrayEntity(msg);
         entity.setContentType("text/plain; charset=US-ASCII");

Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/protocol/ThrottlingHttpServiceHandler.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/protocol/ThrottlingHttpServiceHandler.java?view=diff&rev=506560&r1=506559&r2=506560
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/protocol/ThrottlingHttpServiceHandler.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/protocol/ThrottlingHttpServiceHandler.java Mon Feb 12 10:16:11 2007
@@ -339,11 +339,10 @@
     private HttpResponse handleException(
             final NHttpServerConnection conn,
             final HttpException ex) {
-        HttpRequest request = conn.getHttpRequest();
-        HttpVersion ver = request.getRequestLine().getHttpVersion();
-        HttpResponse response =  this.responseFactory.newHttpResponse(
-                ver, HttpStatus.SC_BAD_REQUEST, conn.getContext());
 
+        HttpRequest request = conn.getHttpRequest();
+        HttpContext context = conn.getContext();
+        
         int code = HttpStatus.SC_INTERNAL_SERVER_ERROR;
         if (ex instanceof MethodNotSupportedException) {
             code = HttpStatus.SC_NOT_IMPLEMENTED;
@@ -352,8 +351,15 @@
         } else if (ex instanceof ProtocolException) {
             code = HttpStatus.SC_BAD_REQUEST;
         }
-        
-        response.setStatusLine(HttpVersion.HTTP_1_0, code);
+
+        HttpVersion ver;
+        if (request != null) {
+            ver = request.getRequestLine().getHttpVersion(); 
+        } else {
+            ver = HttpVersion.HTTP_1_0;
+        }
+        HttpResponse response =  this.responseFactory.newHttpResponse(ver, code, context);
+
         byte[] msg = EncodingUtils.getAsciiBytes(ex.getMessage());
         ByteArrayEntity entity = new ByteArrayEntity(msg);
         entity.setContentType("text/plain; charset=US-ASCII");