comparison src/http/ngx_http_variables.c @ 4905:5cad4cb1f484 stable-1.2

Merge of r4886, r4887, r4894: log variables generalization: *) Log: $apache_bytes_sent removed. It was renamed to $body_bytes_sent in nginx 0.3.10 and the old name is deprecated since then. *) Variable $bytes_sent. It replicates variable $bytes_sent as previously available in log module only. Patch by Benjamin Grössing (with minor changes). *) Variables $connection and $connection_requests. Log module counterparts are removed as they aren't used often and there is no need to preserve them for efficiency.
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 13 Nov 2012 10:45:23 +0000
parents 613390a974df
children 9ab61d17794f
comparison
equal deleted inserted replaced
4904:c3b276283e4a 4905:5cad4cb1f484
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); 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,
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);
76 static ngx_int_t ngx_http_variable_request_body(ngx_http_request_t *r, 78 static ngx_int_t ngx_http_variable_request_body(ngx_http_request_t *r,
91 static ngx_int_t ngx_http_variable_sent_connection(ngx_http_request_t *r, 93 static ngx_int_t ngx_http_variable_sent_connection(ngx_http_request_t *r,
92 ngx_http_variable_value_t *v, uintptr_t data); 94 ngx_http_variable_value_t *v, uintptr_t data);
93 static ngx_int_t ngx_http_variable_sent_keep_alive(ngx_http_request_t *r, 95 static ngx_int_t ngx_http_variable_sent_keep_alive(ngx_http_request_t *r,
94 ngx_http_variable_value_t *v, uintptr_t data); 96 ngx_http_variable_value_t *v, uintptr_t data);
95 static ngx_int_t ngx_http_variable_sent_transfer_encoding(ngx_http_request_t *r, 97 static ngx_int_t ngx_http_variable_sent_transfer_encoding(ngx_http_request_t *r,
98 ngx_http_variable_value_t *v, uintptr_t data);
99
100 static ngx_int_t ngx_http_variable_connection(ngx_http_request_t *r,
101 ngx_http_variable_value_t *v, uintptr_t data);
102 static ngx_int_t ngx_http_variable_connection_requests(ngx_http_request_t *r,
96 ngx_http_variable_value_t *v, uintptr_t data); 103 ngx_http_variable_value_t *v, uintptr_t data);
97 104
98 static ngx_int_t ngx_http_variable_nginx_version(ngx_http_request_t *r, 105 static ngx_int_t ngx_http_variable_nginx_version(ngx_http_request_t *r,
99 ngx_http_variable_value_t *v, uintptr_t data); 106 ngx_http_variable_value_t *v, uintptr_t data);
100 static ngx_int_t ngx_http_variable_hostname(ngx_http_request_t *r, 107 static ngx_int_t ngx_http_variable_hostname(ngx_http_request_t *r,
210 ngx_http_variable_request_method, 0, 217 ngx_http_variable_request_method, 0,
211 NGX_HTTP_VAR_NOCACHEABLE, 0 }, 218 NGX_HTTP_VAR_NOCACHEABLE, 0 },
212 219
213 { ngx_string("remote_user"), NULL, ngx_http_variable_remote_user, 0, 0, 0 }, 220 { ngx_string("remote_user"), NULL, ngx_http_variable_remote_user, 0, 0, 0 },
214 221
222 { ngx_string("bytes_sent"), NULL, ngx_http_variable_bytes_sent,
223 0, 0, 0 },
224
215 { ngx_string("body_bytes_sent"), NULL, ngx_http_variable_body_bytes_sent, 225 { ngx_string("body_bytes_sent"), NULL, ngx_http_variable_body_bytes_sent,
216 0, 0, 0 }, 226 0, 0, 0 },
217 227
218 { ngx_string("request_completion"), NULL, 228 { ngx_string("request_completion"), NULL,
219 ngx_http_variable_request_completion, 229 ngx_http_variable_request_completion,
257 267
258 { ngx_string("limit_rate"), ngx_http_variable_request_set_size, 268 { ngx_string("limit_rate"), ngx_http_variable_request_set_size,
259 ngx_http_variable_request_get_size, 269 ngx_http_variable_request_get_size,
260 offsetof(ngx_http_request_t, limit_rate), 270 offsetof(ngx_http_request_t, limit_rate),
261 NGX_HTTP_VAR_CHANGEABLE|NGX_HTTP_VAR_NOCACHEABLE, 0 }, 271 NGX_HTTP_VAR_CHANGEABLE|NGX_HTTP_VAR_NOCACHEABLE, 0 },
272
273 { ngx_string("connection"), NULL,
274 ngx_http_variable_connection, 0, 0, 0 },
275
276 { ngx_string("connection_requests"), NULL,
277 ngx_http_variable_connection_requests, 0, 0, 0 },
262 278
263 { ngx_string("nginx_version"), NULL, ngx_http_variable_nginx_version, 279 { ngx_string("nginx_version"), NULL, ngx_http_variable_nginx_version,
264 0, 0, 0 }, 280 0, 0, 0 },
265 281
266 { ngx_string("hostname"), NULL, ngx_http_variable_hostname, 282 { ngx_string("hostname"), NULL, ngx_http_variable_hostname,
1432 return NGX_OK; 1448 return NGX_OK;
1433 } 1449 }
1434 1450
1435 1451
1436 static ngx_int_t 1452 static ngx_int_t
1453 ngx_http_variable_bytes_sent(ngx_http_request_t *r,
1454 ngx_http_variable_value_t *v, uintptr_t data)
1455 {
1456 u_char *p;
1457
1458 p = ngx_pnalloc(r->pool, NGX_OFF_T_LEN);
1459 if (p == NULL) {
1460 return NGX_ERROR;
1461 }
1462
1463 v->len = ngx_sprintf(p, "%O", r->connection->sent) - p;
1464 v->valid = 1;
1465 v->no_cacheable = 0;
1466 v->not_found = 0;
1467 v->data = p;
1468
1469 return NGX_OK;
1470 }
1471
1472
1473 static ngx_int_t
1437 ngx_http_variable_body_bytes_sent(ngx_http_request_t *r, 1474 ngx_http_variable_body_bytes_sent(ngx_http_request_t *r,
1438 ngx_http_variable_value_t *v, uintptr_t data) 1475 ngx_http_variable_value_t *v, uintptr_t data)
1439 { 1476 {
1440 off_t sent; 1477 off_t sent;
1441 u_char *p; 1478 u_char *p;
1780 v->len = r->request_body->temp_file->file.name.len; 1817 v->len = r->request_body->temp_file->file.name.len;
1781 v->valid = 1; 1818 v->valid = 1;
1782 v->no_cacheable = 0; 1819 v->no_cacheable = 0;
1783 v->not_found = 0; 1820 v->not_found = 0;
1784 v->data = r->request_body->temp_file->file.name.data; 1821 v->data = r->request_body->temp_file->file.name.data;
1822
1823 return NGX_OK;
1824 }
1825
1826
1827 static ngx_int_t
1828 ngx_http_variable_connection(ngx_http_request_t *r,
1829 ngx_http_variable_value_t *v, uintptr_t data)
1830 {
1831 u_char *p;
1832
1833 p = ngx_pnalloc(r->pool, NGX_ATOMIC_T_LEN);
1834 if (p == NULL) {
1835 return NGX_ERROR;
1836 }
1837
1838 v->len = ngx_sprintf(p, "%uA", r->connection->number) - p;
1839 v->valid = 1;
1840 v->no_cacheable = 0;
1841 v->not_found = 0;
1842 v->data = p;
1843
1844 return NGX_OK;
1845 }
1846
1847
1848 static ngx_int_t
1849 ngx_http_variable_connection_requests(ngx_http_request_t *r,
1850 ngx_http_variable_value_t *v, uintptr_t data)
1851 {
1852 u_char *p;
1853
1854 p = ngx_pnalloc(r->pool, NGX_INT_T_LEN);
1855 if (p == NULL) {
1856 return NGX_ERROR;
1857 }
1858
1859 v->len = ngx_sprintf(p, "%ui", r->connection->requests) - p;
1860 v->valid = 1;
1861 v->no_cacheable = 0;
1862 v->not_found = 0;
1863 v->data = p;
1785 1864
1786 return NGX_OK; 1865 return NGX_OK;
1787 } 1866 }
1788 1867
1789 1868