comparison src/http/ngx_http_variables.c @ 4886:b7f6f097d95e

Variable $bytes_sent. It replicates variable $bytes_sent as previously available in log module only. Patch by Benjamin Grössing (with minor changes).
author Maxim Dounin <mdounin@mdounin.ru>
date Wed, 03 Oct 2012 15:25:36 +0000
parents 09187f9b0950
children e89bd9896fea
comparison
equal deleted inserted replaced
4885:8f1ad536caf1 4886:b7f6f097d95e
66 static ngx_int_t ngx_http_variable_server_name(ngx_http_request_t *r, 66 static ngx_int_t ngx_http_variable_server_name(ngx_http_request_t *r,
67 ngx_http_variable_value_t *v, uintptr_t data); 67 ngx_http_variable_value_t *v, uintptr_t data);
68 static ngx_int_t ngx_http_variable_request_method(ngx_http_request_t *r, 68 static ngx_int_t ngx_http_variable_request_method(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_remote_user(ngx_http_request_t *r, 70 static ngx_int_t ngx_http_variable_remote_user(ngx_http_request_t *r,
71 ngx_http_variable_value_t *v, uintptr_t data);
72 static ngx_int_t ngx_http_variable_bytes_sent(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_body_bytes_sent(ngx_http_request_t *r, 74 static ngx_int_t ngx_http_variable_body_bytes_sent(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_request_completion(ngx_http_request_t *r, 76 static ngx_int_t ngx_http_variable_request_completion(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);
210 ngx_http_variable_request_method, 0, 212 ngx_http_variable_request_method, 0,
211 NGX_HTTP_VAR_NOCACHEABLE, 0 }, 213 NGX_HTTP_VAR_NOCACHEABLE, 0 },
212 214
213 { ngx_string("remote_user"), NULL, ngx_http_variable_remote_user, 0, 0, 0 }, 215 { ngx_string("remote_user"), NULL, ngx_http_variable_remote_user, 0, 0, 0 },
214 216
217 { ngx_string("bytes_sent"), NULL, ngx_http_variable_bytes_sent,
218 0, 0, 0 },
219
215 { ngx_string("body_bytes_sent"), NULL, ngx_http_variable_body_bytes_sent, 220 { ngx_string("body_bytes_sent"), NULL, ngx_http_variable_body_bytes_sent,
216 0, 0, 0 }, 221 0, 0, 0 },
217 222
218 { ngx_string("request_completion"), NULL, 223 { ngx_string("request_completion"), NULL,
219 ngx_http_variable_request_completion, 224 ngx_http_variable_request_completion,
1426 v->len = r->headers_in.user.len; 1431 v->len = r->headers_in.user.len;
1427 v->valid = 1; 1432 v->valid = 1;
1428 v->no_cacheable = 0; 1433 v->no_cacheable = 0;
1429 v->not_found = 0; 1434 v->not_found = 0;
1430 v->data = r->headers_in.user.data; 1435 v->data = r->headers_in.user.data;
1436
1437 return NGX_OK;
1438 }
1439
1440
1441 static ngx_int_t
1442 ngx_http_variable_bytes_sent(ngx_http_request_t *r,
1443 ngx_http_variable_value_t *v, uintptr_t data)
1444 {
1445 u_char *p;
1446
1447 p = ngx_pnalloc(r->pool, NGX_OFF_T_LEN);
1448 if (p == NULL) {
1449 return NGX_ERROR;
1450 }
1451
1452 v->len = ngx_sprintf(p, "%O", r->connection->sent) - p;
1453 v->valid = 1;
1454 v->no_cacheable = 0;
1455 v->not_found = 0;
1456 v->data = p;
1431 1457
1432 return NGX_OK; 1458 return NGX_OK;
1433 } 1459 }
1434 1460
1435 1461