I read the HTTP 1.1 specification today [1] and I think the rule should only apply to 204 and 304 response (and all 1xx):

> 1.Any response message which "MUST NOT" include a message-body (such as the 1xx, 204, and 304 responses and any response to a HEAD request) is always terminated by the first empty line after the header fields, regardless of the entity-header fields present in the message.

Other status should contains a body or a content-length to be null. In code that can be 

    if if self.response_length is not None or self.chunked:
         if status. code.startswith('1') or status_code in ('204', '304'):
             return True
         else:
             return False

Similar to https://github.com/benoitc/gunicorn/blob/master/gunicorn/http/wsgi.py#L243 somehow.

Thoughts?


[1] http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.4