Hello Valentin, I understand that the "*complete*" handling of the 204 & 304 response is not same, but it is same for below mentioned response headers received by downstream client
Quote for handling of "Content-Type", "Content-Length", "Last-Modified" header from ngx_http_header_filter_module.c::ngx_http_header_filter() /* clear out CL/CT header for header only 204/304 response earlier it was done only for 204/304 generated by nginx making it common for both paths - when nginx is serving the response and when the response is generated from the upstream */ if (r->headers_out.status == NGX_HTTP_NO_CONTENT || r->headers_out.status == NGX_HTTP_NOT_MODIFIED) { r->header_only = 1; ngx_str_null(&r->headers_out.content_type); r->headers_out.last_modified_time = -1; r->headers_out.last_modified = NULL; r->headers_out.content_length = NULL; r->headers_out.content_length_n = -1; } --- After this "*common*" handling for 204 & 304 responses, specific handling of 204/304 come in effect. I wanted to achieve this "*common*" handling through the patch I submitted. I think the patch is correct and should be incorporated. Without the patch, SPDY 304 responses will have "Content-Length", "Content-Type" header (which is not present in non-SPDY 304 response). Let me know if I am not being clear here. On Thu, Dec 25, 2014 at 8:04 PM, Valentin V. Bartenev <vb...@nginx.com> wrote: > On Thursday 25 December 2014 09:34:16 Shrirang Ballal wrote: > > 304 handling for non-spdy requests is exactly same as that of 204 > handling > > (Reference : ngx_http_header_filter_module.c::ngx_http_header_filter()). > > SPDY requests too should be handled same way. > [..] > > Well, they are not handled the same way. > > A quote from the function you mentioned: > > if (status >= NGX_HTTP_OK > && status < NGX_HTTP_LAST_2XX) > { > /* 2XX */ > > if (status == NGX_HTTP_NO_CONTENT) { > r->header_only = 1; > ngx_str_null(&r->headers_out.content_type); > r->headers_out.last_modified_time = -1; > r->headers_out.last_modified = NULL; > r->headers_out.content_length = NULL; > r->headers_out.content_length_n = -1; > } > > status -= NGX_HTTP_OK; > status_line = &ngx_http_status_lines[status]; > len += ngx_http_status_lines[status].len; > > } else if (status >= NGX_HTTP_MOVED_PERMANENTLY > && status < NGX_HTTP_LAST_3XX) > { > /* 3XX */ > > if (status == NGX_HTTP_NOT_MODIFIED) { > r->header_only = 1; > } > > status = status - NGX_HTTP_MOVED_PERMANENTLY + > NGX_HTTP_OFF_3XX; > status_line = &ngx_http_status_lines[status]; > len += ngx_http_status_lines[status].len; > > } > > > > wbr, Valentin V. Bartenev > > _______________________________________________ > nginx-devel mailing list > nginx-devel@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-devel >
_______________________________________________ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel