206 /*The following convoluted conditional determines whether or not 207 *the current connection should remain persistent after this response 208 *(a.k.a. HTTP Keep-Alive) and whether or not the output message 209 *body should use the HTTP/1.1 chunked transfer-coding. In English, 210 * 211 * IF we have not marked this connection as errored; 212 * and the response body has a defined length due to the status code 213 * being 304 or 204, the request method being HEAD, already 214 * having defined Content-Length or Transfer-Encoding: chunked, or 215 * the request version being HTTP/1.1 and thus capable of being set 216 * as chunked [we know the (r->chunked = 1) side-effect is ugly]; 217 * and the server configuration enables keep-alive; 218 * and the server configuration has a reasonable inter-request timeout; 219 * and there is no maximum # requests or the max hasn't been reached; 220 * and the response status does not require a close; 221 * and the response generator has not already indicated close; 222 * and the client did not request non-persistence (Connection: close); 223 * and we haven't been configured to ignore the buggy twit 224 * or they're a buggy twit coming through a HTTP/1.1 proxy 225 * and the client is requesting an HTTP/1.0-style keep-alive 226 * or the client claims to be HTTP/1.1 compliant (perhaps a proxy); 227 * THEN we can be persistent, which requires more headers be output. 228 * 229 *Note that the condition evaluation order is extremely important. 230 */