comparison src/http/ngx_http_variables.c @ 442: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
441:52bbf0e6dfad 442: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