New submission from Kier Davis <m...@kierdavis.com>:

## Context ##

* Python is executing a script on behalf of a web server (e.g. Apache httpd) 
following the CGI protocol.
* cgitb is enabled and configured to use the 'text' format.
* An unhandled exception occurs before any CGI response headers have been 
emitted.


## Expected behaviour ##

A valid response is returned from the CGI script to the web server and 
ultimately to the client.


## Observed behaviour ##

The response is rejected by the web server because it does not begin with a 
valid CGI header block.

    [cgi:error] [pid xxxxx] [client xxx.xxx.xxx.xxx:xxxxx] malformed header 
from script 'web.py': Bad header: <p>A problem occurred in a Pyt

Any traceback info included (if display=1) gets discarded and the web server 
returns its own Internal Server Error response instead.


## Comments ##

A valid response is observed if format='html'. This bug only concerns 
format='text'.
The behaviour is the same regardless of whether display=0 or display=1.

I imagine this is because cgitb.reset (which emits the headers) is only called 
when format='html'.
We could resolve this by always calling cgitb.reset regardless of the format, 
or by introducing separate text-format and HTML-format versions of cgitb.reset.
I'm happy to prepare a patch if you agree on the approach.

----------
components: Library (Lib)
files: repro_cgitb_not_emitting_headers_in_text_mode.py
messages: 405198
nosy: kierdavis
priority: normal
severity: normal
status: open
title: cgitb does not emit CGI headers when format='text'
type: behavior
versions: Python 3.10, Python 3.11, Python 3.6, Python 3.7, Python 3.8, Python 
3.9
Added file: 
https://bugs.python.org/file50409/repro_cgitb_not_emitting_headers_in_text_mode.py

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue45650>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to