Mercurial > hg > nginx-ranges
comparison src/http/ngx_http_variables.c @ 451:670af56a1158 NGINX_0_7_33
nginx 0.7.33
*) Bugfix: a double response might be returned if the epoll or rtsig
methods are used and a redirect was returned to a request with
body.
Thanks to Eden Li.
*) Bugfix: the $sent_http_location variable was empty for some
redirects types.
*) Bugfix: a segmentation fault might occur in worker process if
"resolver" directive was used in SMTP proxy.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Mon, 02 Feb 2009 00:00:00 +0300 |
parents | fd759445d8a8 |
children | 76a79816b771 |
comparison
equal
deleted
inserted
replaced
450:52bbf0e6dfad | 451:670af56a1158 |
---|---|
66 ngx_http_variable_value_t *v, uintptr_t data); | 66 ngx_http_variable_value_t *v, uintptr_t data); |
67 | 67 |
68 static ngx_int_t ngx_http_variable_sent_content_type(ngx_http_request_t *r, | 68 static ngx_int_t ngx_http_variable_sent_content_type(ngx_http_request_t *r, |
69 ngx_http_variable_value_t *v, uintptr_t data); | 69 ngx_http_variable_value_t *v, uintptr_t data); |
70 static ngx_int_t ngx_http_variable_sent_content_length(ngx_http_request_t *r, | 70 static ngx_int_t ngx_http_variable_sent_content_length(ngx_http_request_t *r, |
71 ngx_http_variable_value_t *v, uintptr_t data); | |
72 static ngx_int_t ngx_http_variable_sent_location(ngx_http_request_t *r, | |
71 ngx_http_variable_value_t *v, uintptr_t data); | 73 ngx_http_variable_value_t *v, uintptr_t data); |
72 static ngx_int_t ngx_http_variable_sent_last_modified(ngx_http_request_t *r, | 74 static ngx_int_t ngx_http_variable_sent_last_modified(ngx_http_request_t *r, |
73 ngx_http_variable_value_t *v, uintptr_t data); | 75 ngx_http_variable_value_t *v, uintptr_t data); |
74 static ngx_int_t ngx_http_variable_sent_connection(ngx_http_request_t *r, | 76 static ngx_int_t ngx_http_variable_sent_connection(ngx_http_request_t *r, |
75 ngx_http_variable_value_t *v, uintptr_t data); | 77 ngx_http_variable_value_t *v, uintptr_t data); |
208 ngx_http_variable_sent_content_type, 0, 0, 0 }, | 210 ngx_http_variable_sent_content_type, 0, 0, 0 }, |
209 | 211 |
210 { ngx_string("sent_http_content_length"), NULL, | 212 { ngx_string("sent_http_content_length"), NULL, |
211 ngx_http_variable_sent_content_length, 0, 0, 0 }, | 213 ngx_http_variable_sent_content_length, 0, 0, 0 }, |
212 | 214 |
215 { ngx_string("sent_http_location"), NULL, | |
216 ngx_http_variable_sent_location, 0, 0, 0 }, | |
217 | |
213 { ngx_string("sent_http_last_modified"), NULL, | 218 { ngx_string("sent_http_last_modified"), NULL, |
214 ngx_http_variable_sent_last_modified, 0, 0, 0 }, | 219 ngx_http_variable_sent_last_modified, 0, 0, 0 }, |
215 | 220 |
216 { ngx_string("sent_http_connection"), NULL, | 221 { ngx_string("sent_http_connection"), NULL, |
217 ngx_http_variable_sent_connection, 0, 0, 0 }, | 222 ngx_http_variable_sent_connection, 0, 0, 0 }, |
1240 return NGX_OK; | 1245 return NGX_OK; |
1241 } | 1246 } |
1242 | 1247 |
1243 | 1248 |
1244 static ngx_int_t | 1249 static ngx_int_t |
1250 ngx_http_variable_sent_location(ngx_http_request_t *r, | |
1251 ngx_http_variable_value_t *v, uintptr_t data) | |
1252 { | |
1253 if (r->headers_out.location) { | |
1254 v->len = r->headers_out.location->value.len; | |
1255 v->valid = 1; | |
1256 v->no_cacheable = 0; | |
1257 v->not_found = 0; | |
1258 v->data = r->headers_out.location->value.data; | |
1259 | |
1260 return NGX_OK; | |
1261 } | |
1262 | |
1263 return ngx_http_variable_unknown_header(v, (ngx_str_t *) data, | |
1264 &r->headers_out.headers.part, | |
1265 sizeof("sent_http_") - 1); | |
1266 } | |
1267 | |
1268 | |
1269 static ngx_int_t | |
1245 ngx_http_variable_sent_last_modified(ngx_http_request_t *r, | 1270 ngx_http_variable_sent_last_modified(ngx_http_request_t *r, |
1246 ngx_http_variable_value_t *v, uintptr_t data) | 1271 ngx_http_variable_value_t *v, uintptr_t data) |
1247 { | 1272 { |
1248 u_char *p; | 1273 u_char *p; |
1249 | 1274 |