Philip Martin <philip.mar...@wandisco.com> writes:

> While debugging a problem reported on users I accidentally sent an extra
> byte to the client: I sent Content-Length of N and then sent N+1 bytes.
> The first N bytes made a valid response, so serf was happy at that
> stage.  When processing the next request the extra byte causes serf to
> attempt to handle the spurious data before any request handler is setup.
> This is with serf 1.3.x@2440.

Here's a patch that causes serf to return an error if this sort of
spurious data is received:

Index: outgoing.c
===================================================================
--- outgoing.c  (revision 2445)
+++ outgoing.c  (working copy)
@@ -1109,7 +1109,11 @@ static apr_status_t read_from_connection(serf_conn
                 goto error;
             }
 
-            /* Unexpected response from the server */
+            /* Unexpected response from the server. This can happen if
+             * a buggy server sends more than Content-Length data.
+             */
+            status = SERF_ERROR_BAD_HTTP_RESPONSE;
+            goto error;
 
         }
 

-- 
Philip Martin | Subversion Committer
WANdisco // *Non-Stop Data*

Reply via email to