diff -ru --exclude='*.fasl' hunchentoot-0.4.9/doc/index.html hunchentoot.mine/doc/index.html
--- hunchentoot-0.4.9/doc/index.html	2006-11-12 14:40:50.000000000 +0100
+++ hunchentoot.mine/doc/index.html	2006-11-18 03:13:27.000000000 +0100
@@ -1760,9 +1760,15 @@
 
 <blockquote><br>
 This variable holds <code>NIL</code> (the default) or a <a
-href="http://www.lispworks.com/documentation/HyperSpec/Body/26_glo_f.htm#function_designator">function designator</a> for a function of one argument.  The function gets called if the responsible <a href="#handlers">handler</a> has set a return code other than <a href="#+http-ok+"><code>+HTTP-OK+</code></a> or <a href="#+http-not-modified+"><code>+HTTP-NOT-MODIFIED+</code></a> and receives this return code as its argument.  It can return the contents of an
-error page or <code>NIL</code> if it refuses to handle the error, i.e. if Hunchentoot's default error page should be shown.
-(Note that the function can access the request and reply data.)
+href="http://www.lispworks.com/documentation/HyperSpec/Body/26_glo_f.htm#function_designator">function designator</a> for a function of one argument. The function gets called if the responsible <a href="#handlers">handler</a> has set a return code other than <a href="#+http-ok+"><code>+HTTP-OK+</code></a> or <a href="#+http-not-modified+"><code>+HTTP-NOT-MODIFIED+</code></a> and <a href="#*handle-http-errors-p*"><code>*handle-http-errors-p*</code></a> is true. It receives the return code as its argument and can return the contents of an error page or <code>NIL</code> if it refuses to handle the error, i.e. if Hunchentoot's default error page should be shown. (Note that the function can access the request and reply data.)
+</blockquote>
+
+<p><br>[Special variable]
+<br><a class=none
+name="*handle-http-errors-p*"><b>*handle-http-errors-p*</b></a>
+
+<blockquote><br>
+This variable holds a generalized boolean that determines whether return codes other than <a href="#+http-ok+"><code>+HTTP-OK+</code></a> or <a href="#+http-not-modified+"><code>+HTTP-NOT-MODIFIED+</code></a> are treated specially. When true (the default), either a default body for the return code or the result of calling <a href="#*http-error-handler*"><code>*http-error-handler*</code></a> is used. When false, no special action is taken and you are expected to supply your own response body to describe the error.
 </blockquote>
 
 <p><br>[Function]
@@ -2005,6 +2011,7 @@
       <li><a href="#*default-write-timeout*"><code>*default-write-timeout*</code></a>
       <li><a href="#*dispatch-table*"><code>*dispatch-table*</code></a>
       <li><a href="#*file-upload-hook*"><code>*file-upload-hook*</code></a>
+      <li><a href="#*handle-http-errors-p*"><code>*handle-http-errors-p*</code></a>
       <li><a href="#*http-error-handler*"><code>*http-error-handler*</code></a>
       <li><a href="#*hunchentoot-default-external-format*"><code>*hunchentoot-default-external-format*</code></a>
       <li><a href="#*lisp-errors-log-level*"><code>*lisp-errors-log-level*</code></a>
diff -ru --exclude='*.fasl' hunchentoot-0.4.9/headers.lisp hunchentoot.mine/headers.lisp
--- hunchentoot-0.4.9/headers.lisp	2006-11-12 14:40:48.000000000 +0100
+++ hunchentoot.mine/headers.lisp	2006-11-18 03:17:04.000000000 +0100
@@ -116,7 +116,7 @@
             content-modified-p t
             return-code +http-internal-server-error+
             status-line (status-line return-code)))
-    (unless (member return-code '(#.+http-ok+ #.+http-not-modified+))
+    (unless (or (not *handle-http-errors-p*) (member return-code '(#.+http-ok+ #.+http-not-modified+)))
       ;; call error handler, if any - should return NIL if it can't
       ;; handle the error.
       (let (error-handled-p)
diff -ru --exclude='*.fasl' hunchentoot-0.4.9/packages.lisp hunchentoot.mine/packages.lisp
--- hunchentoot-0.4.9/packages.lisp	2006-10-09 16:04:48.000000000 +0200
+++ hunchentoot.mine/packages.lisp	2006-11-18 03:21:32.000000000 +0100
@@ -53,6 +53,7 @@
            :*cleanup-function*
            :*cleanup-interval*
            :*http-error-handler*
+           :*handle-http-errors-p*
            :*hunchentoot-default-external-format*
            :*lisp-errors-log-level*
            :*lisp-warnings-log-level*
diff -ru --exclude='*.fasl' hunchentoot-0.4.9/specials.lisp hunchentoot.mine/specials.lisp
--- hunchentoot-0.4.9/specials.lisp	2006-10-10 20:55:16.000000000 +0200
+++ hunchentoot.mine/specials.lisp	2006-11-18 03:17:04.000000000 +0100
@@ -248,7 +248,15 @@
 (defvar *http-error-handler* nil
   "Contains NIL \(the default) or a function of one argument which is
 called if the content handler has set a return code other than
-+HTTP-OK+ or +HTTP-NOT-MODIFIED+.")
++HTTP-OK+ or +HTTP-NOT-MODIFIED+ and *handle-http-errors* is true.")
+
+(defvar *handle-http-errors-p* t
+  "A generalized boolean that determines whether return codes other
+than +HTTP-OK+ or +HTTP-NOT-MODIFIED+ are treated specially. When true
+\(the default), either a default body for the return code or the
+result of calling *http-error-handler* is used. When false, no special
+action is taken and you are expected to supply your own response
+body to describe the error.")
 
 (defvar *default-log-level* nil
   "The default log level for LOG-MESSAGE*.")
