Merged branch 'jetty-7' into 'jetty-8'.
diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java
index 5d24c9c..1effdad 100644
--- a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java
+++ b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpParser.java
@@ -637,8 +637,8 @@
                                             break;
 
                                         case HttpTokens.NO_CONTENT:
-                                            _handler.headerComplete();
                                             _state=_persistent||(_responseStatus>=100&&_responseStatus<200)?STATE_END:STATE_SEEKING_EOF;
+                                            _handler.headerComplete();
                                             _handler.messageComplete(_contentPosition);
                                             return 1;
 
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractHttpConnection.java b/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractHttpConnection.java
index 42bd11d..ccdd878 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractHttpConnection.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractHttpConnection.java
@@ -922,6 +922,8 @@
                 {
                     _generator.setPersistent(true);
                     _parser.setPersistent(true);
+                    if (_parser instanceof HttpParser)
+                        ((HttpParser)_parser).setState(HttpParser.STATE_END);
                 }
 
                 if (_server.getSendDateHeader())
diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/HttpServerTestBase.java b/jetty-server/src/test/java/org/eclipse/jetty/server/HttpServerTestBase.java
index 899038e..4fabe95 100644
--- a/jetty-server/src/test/java/org/eclipse/jetty/server/HttpServerTestBase.java
+++ b/jetty-server/src/test/java/org/eclipse/jetty/server/HttpServerTestBase.java
@@ -1234,6 +1234,58 @@
         }
     }
 
+    @Test
+    public void testAvailableForPipelinedRequests() throws Exception
+    {
+        configureServer(new AbstractHandler()
+        {
+            public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
+            {
+                baseRequest.setHandled(true);
+                int available = request.getInputStream().available();
+                ServletOutputStream output = response.getOutputStream();
+                output.println(target);
+                output.println(String.valueOf(available));
+            }
+        });
+
+        Socket client = newSocket(HOST,_connector.getLocalPort());
+        try
+        {
+            OutputStream output = client.getOutputStream();
+            InputStream input = client.getInputStream();
+
+            output.write((
+                    "GET /one HTTP/1.1\r\n"+
+                            "host: "+HOST+":"+_connector.getLocalPort()+"\r\n"+
+                            "\r\n"+
+                    "GET /two HTTP/1.1\r\n"+
+                            "host: "+HOST+":"+_connector.getLocalPort()+"\r\n"+
+                            "\r\n"
+            ).getBytes());
+            output.flush();
+
+            BufferedReader reader = new BufferedReader(new InputStreamReader(input, "UTF-8"));
+
+            while(reader.readLine().length() > 0)
+            {
+                // Skip response headers.
+            }
+            assertEquals("/one", reader.readLine());
+            assertEquals(0, Integer.parseInt(reader.readLine()));
+
+            while(reader.readLine().length() > 0)
+            {
+                // Skip response headers.
+            }
+            assertEquals("/two", reader.readLine());
+            assertEquals(0, Integer.parseInt(reader.readLine()));
+        }
+        finally
+        {
+            client.close();
+        }
+    }
 
     @Test
     public void testDualRequest1() throws Exception