annotate src/http/v3/ngx_http_v3_table.h @ 9299:2706b60dc225 default tip

Core: error logging rate limiting. With this change, error logging to files can be rate-limited with the "rate=" parameter. The parameter specifies allowed log messages rate to a particular file (per worker), in messages per second (m/s). By default, "rate=1000m/s" is used. Rate limiting is implemented using the "leaky bucket" method, similarly to the limit_req module. Maximum burst size is set to the number of log messages per second for each severity level, so "error" messages are logged even if the rate limit is hit by "info" messages (but not vice versa). When the limit is reached for a particular level, the "too many log messages, limiting" message is logged at this level. If debug logging is enabled, either for the particular log file or for the particular connection, rate limiting is not used.
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 25 Jun 2024 22:58:56 +0300
parents 81a3429db8b0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8773
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
1
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
2 /*
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
3 * Copyright (C) Roman Arutyunyan
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
4 * Copyright (C) Nginx, Inc.
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
5 */
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
6
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
7
8925
18d23ed15eef HTTP/3: renamed files.
Roman Arutyunyan <arut@nginx.com>
parents: 8807
diff changeset
8 #ifndef _NGX_HTTP_V3_TABLE_H_INCLUDED_
18d23ed15eef HTTP/3: renamed files.
Roman Arutyunyan <arut@nginx.com>
parents: 8807
diff changeset
9 #define _NGX_HTTP_V3_TABLE_H_INCLUDED_
8773
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
10
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
11
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
12 #include <ngx_config.h>
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
13 #include <ngx_core.h>
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
14 #include <ngx_http.h>
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
15
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
16
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
17 typedef struct {
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
18 ngx_str_t name;
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
19 ngx_str_t value;
8807
0ac25efb2da3 HTTP/3: quic-qpack term updates.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8775
diff changeset
20 } ngx_http_v3_field_t;
8773
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
21
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
22
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
23 typedef struct {
8807
0ac25efb2da3 HTTP/3: quic-qpack term updates.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8775
diff changeset
24 ngx_http_v3_field_t **elts;
8773
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
25 ngx_uint_t nelts;
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
26 ngx_uint_t base;
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
27 size_t size;
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
28 size_t capacity;
8989
81a3429db8b0 HTTP/3: delayed Insert Count Increment instruction.
Roman Arutyunyan <arut@nginx.com>
parents: 8925
diff changeset
29 uint64_t insert_count;
81a3429db8b0 HTTP/3: delayed Insert Count Increment instruction.
Roman Arutyunyan <arut@nginx.com>
parents: 8925
diff changeset
30 uint64_t ack_insert_count;
81a3429db8b0 HTTP/3: delayed Insert Count Increment instruction.
Roman Arutyunyan <arut@nginx.com>
parents: 8925
diff changeset
31 ngx_event_t send_insert_count;
8773
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
32 } ngx_http_v3_dynamic_table_t;
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
33
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
34
8989
81a3429db8b0 HTTP/3: delayed Insert Count Increment instruction.
Roman Arutyunyan <arut@nginx.com>
parents: 8925
diff changeset
35 void ngx_http_v3_inc_insert_count_handler(ngx_event_t *ev);
8775
6e2c23481abb HTTP/3: clean up table from session cleanup handler.
Roman Arutyunyan <arut@nginx.com>
parents: 8773
diff changeset
36 void ngx_http_v3_cleanup_table(ngx_http_v3_session_t *h3c);
8773
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
37 ngx_int_t ngx_http_v3_ref_insert(ngx_connection_t *c, ngx_uint_t dynamic,
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
38 ngx_uint_t index, ngx_str_t *value);
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
39 ngx_int_t ngx_http_v3_insert(ngx_connection_t *c, ngx_str_t *name,
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
40 ngx_str_t *value);
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
41 ngx_int_t ngx_http_v3_set_capacity(ngx_connection_t *c, ngx_uint_t capacity);
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
42 ngx_int_t ngx_http_v3_duplicate(ngx_connection_t *c, ngx_uint_t index);
8807
0ac25efb2da3 HTTP/3: quic-qpack term updates.
Sergey Kandaurov <pluknet@nginx.com>
parents: 8775
diff changeset
43 ngx_int_t ngx_http_v3_ack_section(ngx_connection_t *c, ngx_uint_t stream_id);
8773
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
44 ngx_int_t ngx_http_v3_inc_insert_count(ngx_connection_t *c, ngx_uint_t inc);
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
45 ngx_int_t ngx_http_v3_lookup_static(ngx_connection_t *c, ngx_uint_t index,
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
46 ngx_str_t *name, ngx_str_t *value);
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
47 ngx_int_t ngx_http_v3_lookup(ngx_connection_t *c, ngx_uint_t index,
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
48 ngx_str_t *name, ngx_str_t *value);
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
49 ngx_int_t ngx_http_v3_decode_insert_count(ngx_connection_t *c,
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
50 ngx_uint_t *insert_count);
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
51 ngx_int_t ngx_http_v3_check_insert_count(ngx_connection_t *c,
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
52 ngx_uint_t insert_count);
8989
81a3429db8b0 HTTP/3: delayed Insert Count Increment instruction.
Roman Arutyunyan <arut@nginx.com>
parents: 8925
diff changeset
53 void ngx_http_v3_ack_insert_count(ngx_connection_t *c, uint64_t insert_count);
8773
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
54 ngx_int_t ngx_http_v3_set_param(ngx_connection_t *c, uint64_t id,
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
55 uint64_t value);
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
56
b43e50f47b2e HTTP/3: separate header files for existing source files.
Roman Arutyunyan <arut@nginx.com>
parents:
diff changeset
57
8925
18d23ed15eef HTTP/3: renamed files.
Roman Arutyunyan <arut@nginx.com>
parents: 8807
diff changeset
58 #endif /* _NGX_HTTP_V3_TABLE_H_INCLUDED_ */