If PythonDebug is On and error occurs, status is 200 when it should really be 
500.
----------------------------------------------------------------------------------

         Key: MODPYTHON-167
         URL: http://issues.apache.org/jira/browse/MODPYTHON-167
     Project: mod_python
        Type: Bug

  Components: core  
    Versions: 3.1.4, 3.2.8    
    Reporter: Graham Dumpleton
 Assigned to: Graham Dumpleton 


If PythonDebug is Off and an uncaught exception occurs in Python, the details 
of that exception will be logged in the Apache error log file. At the same time 
a 500 (HTTP_INTERNAL_SERVER_ERROR) response is returned to the client with 
whatever the configured default 500 error response message is for Apache.

If PythonDebug is On, the details are still logged to the error log, but the 
details of the exception will also be formatted and returned in the response to 
the client. In returning this response though, the HTTP status code is being 
returned as 200 (HTTP_OK) rather than the more correct 500 
(HTTP_INTERNAL_SERVER_ERROR).

By wrongly returning 200 rather than 500, one could theoretically run up 
against problems like the response being cached, or if client was a non 
interactive application, it may think it was an entirely valid response and not 
flag in some way that it was actually an error.

The change to fix this in the code are as details in following patch. Note that 
returning 500 will still result in the message being displayed in a web 
browser, so for its intended purpose of displaying a traceback to a client, it 
will still work as required.

Index: lib/python/mod_python/apache.py
===================================================================
--- lib/python/mod_python/apache.py     (revision 396453)
+++ lib/python/mod_python/apache.py     (working copy)
@@ -533,6 +533,7 @@
                     return HTTP_INTERNAL_SERVER_ERROR
                 else:
                     # write to client
+                    req.status = HTTP_INTERNAL_SERVER_ERROR
                     req.content_type = 'text/html'
 
                     s = '\n<pre>\nMod_python error: "%s %s"\n\n' % (phase, 
hname)


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to