Subject: bug#10768: 23.3; url-http misses data when last few bytes are in 2nd packet and content-length is used

From: "Christopher J. White" <[email-masked]>
Date: Thu, 9 Feb 2012 13:46:37 -0500

Quick work!  First past looks good, except you're missing one additional
paren after the last diff line:

-	  (url-http-clean-headers)))
+	  (setq nd (- nd (url-http-clean-headers)))))

Let me run this through a number of cases and see how well it holds up
for a few days.

Thanks
...cj

On Thu, 09 Feb 2012 16:43:27 +0100
Andreas Schwab <[email-masked]> wrote:

> Does this help?
> 
> diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el
> index b43ed76..140824f 100644
> --- a/lisp/url/url-http.el
> +++ b/lisp/url/url-http.el
> @@ -352,11 +352,14 @@ request.")
>  ;; Parsing routines
>  (defun url-http-clean-headers ()
>    "Remove trailing \r from header lines.
> -This allows us to use `mail-fetch-field', etc."
> +This allows us to use `mail-fetch-field', etc.
> +Return the number of characters removed."
>    (declare (special url-http-end-of-headers))
> -  (goto-char (point-min))
> -  (while (re-search-forward "\r$" url-http-end-of-headers t)
> -    (replace-match "")))
> +  (let ((end (marker-position url-http-end-of-headers)))
> +    (goto-char (point-min))
> +    (while (re-search-forward "\r$" url-http-end-of-headers t)
> +      (replace-match ""))
> +    (- end url-http-end-of-headers)))
>  
>  (defun url-http-handle-authentication (proxy)
>    (declare (special status success url-http-method url-http-data
> @@ -1051,7 +1054,7 @@ the end of the document."
>  	  (setq url-http-end-of-headers (set-marker (make-marker)
>  						    (point))
>  		end-of-headers t)
> -	  (url-http-clean-headers)))
> +	  (setq nd (- nd (url-http-clean-headers))))
>  
>        (if (not end-of-headers)
>  	  ;; Haven't seen the end of the headers yet, need to wait
> 
> Andreas.
>