Mercurial > hg > nginx
comparison src/http/ngx_http_variables.c @ 2485:51b1097dbb67
fix $sent_http_location for local redirects
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Fri, 30 Jan 2009 05:26:27 +0000 |
parents | d311b7f6a403 |
children | 2e91aecb9e57 |
comparison
equal
deleted
inserted
replaced
2484:cf3cd450049c | 2485:51b1097dbb67 |
---|---|
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 |