Subject: 26.0.50; url-insert-file-contents signals error for HTTP 304 response

From: Andreas Politz <[email-masked]>
Date: Sat, 11 Mar 2017 19:34:39 +0100

Start from emacs -Q .

1. Install debbugs (http://elpa.gnu.org/packages/debbugs.html)
2. Enable url-automatic-caching
3. M-x debbugs-gnu-search RET change-group RET

This should pop-up some results in a new buffer.  Now hit RET
(debbugs-gnu-select-report) on one of them, which will popup a gnus
buffer displaying the related articles.  Close that buffer via q
(gnus-summary-exit).  Back in the debbugs buffer, hit RET again, which
will lead to the following (abbreviated) backtrace.

Debugger entered--Lisp error: (file-error "http://debbugs.gnu.org/cgi/bugreport.cgi?bug=23906;mboxmaint=yes;mboxstat=yes" "Not modified")
  signal(file-error ("http://debbugs.gnu.org/cgi/bugreport.cgi?bug=23906;mboxmaint=yes;mboxstat=yes" "Not modified"))
  ...
  url-insert-file-contents("http://debbugs.gnu.org/cgi/bugreport.cgi?bug=23906;mboxmaint=yes;mboxstat=yes")
  gnus-read-ephemeral-bug-group((23906) "http://debbugs.gnu.org/cgi/bugreport.cgi?bug=%s;mboxmaint=yes;mboxstat=yes" (#<buffer *"change-group" Bugs*> . #<window-configuration>))
  gnus-read-ephemeral-emacs-bug-group((23906) (#<buffer *"change-group" Bugs*> . #<window-configuration>))
  debbugs-read-emacs-bug-with-gnus(23906 ((cache_time . 1489254461.4531486) (summary) (subject . "25.0.95; Undo boundary after process output is not consistent") (done) (fixed_versions) (blockedby) (date . 1467827822) (log_modified . 1469396222) (blocks) (affects) (fixed_date) (bug_num . 23906) (source . "unknown") (unarchived) (mergedwith) (found_versions "25.0.95") (tags) (pending . "pending") (found (item (key . "25.0.95") (value))) (package "emacs") (keywords) (id . 23906) (severity . "normal") (msgid . "<[email-masked]>") (forwarded) (owner) (found_date) (originator . "Markus Triska <[email-masked]>") (fixed) (location . "db-h") (archived) (last_modified . 1469396222)) nil)
  debbugs-gnu-select-report()

I think url-insert-file-contents should not raise an error when the
status code is 304, because it just means that the result comes from the
cache, instead of the server.

-ap