Mercurial > hg > nginx-quic
comparison src/http/ngx_http_core_module.c @ 5733:e491b26fa5a1
Entity tags: downgrade strong etags to weak ones as needed.
See http://mailman.nginx.org/pipermail/nginx-devel/2013-November/004523.html.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Thu, 26 Jun 2014 02:21:01 +0400 |
parents | 790ba7484bb6 |
children | c5ec6944de98 |
comparison
equal
deleted
inserted
replaced
5732:d0ce06cb9be1 | 5733:e491b26fa5a1 |
---|---|
1846 - etag->value.data; | 1846 - etag->value.data; |
1847 | 1847 |
1848 r->headers_out.etag = etag; | 1848 r->headers_out.etag = etag; |
1849 | 1849 |
1850 return NGX_OK; | 1850 return NGX_OK; |
1851 } | |
1852 | |
1853 | |
1854 void | |
1855 ngx_http_weak_etag(ngx_http_request_t *r) | |
1856 { | |
1857 size_t len; | |
1858 u_char *p; | |
1859 ngx_table_elt_t *etag; | |
1860 | |
1861 etag = r->headers_out.etag; | |
1862 | |
1863 if (etag == NULL) { | |
1864 return; | |
1865 } | |
1866 | |
1867 if (etag->value.len > 2 | |
1868 && etag->value.data[0] == 'W' | |
1869 && etag->value.data[1] == '/') | |
1870 { | |
1871 return; | |
1872 } | |
1873 | |
1874 if (etag->value.len < 1 || etag->value.data[0] != '"') { | |
1875 r->headers_out.etag->hash = 0; | |
1876 r->headers_out.etag = NULL; | |
1877 return; | |
1878 } | |
1879 | |
1880 p = ngx_pnalloc(r->pool, etag->value.len + 2); | |
1881 if (p == NULL) { | |
1882 r->headers_out.etag->hash = 0; | |
1883 r->headers_out.etag = NULL; | |
1884 return; | |
1885 } | |
1886 | |
1887 len = ngx_sprintf(p, "W/%V", &etag->value) - p; | |
1888 | |
1889 etag->value.data = p; | |
1890 etag->value.len = len; | |
1851 } | 1891 } |
1852 | 1892 |
1853 | 1893 |
1854 ngx_int_t | 1894 ngx_int_t |
1855 ngx_http_send_response(ngx_http_request_t *r, ngx_uint_t status, | 1895 ngx_http_send_response(ngx_http_request_t *r, ngx_uint_t status, |