Mercurial > hg > nginx-quic
annotate src/event/quic/ngx_event_quic_bpf_code.c @ 9008:2ee6f9729739 quic
QUIC: set stream error flag on reset.
Now, when RESET_STREAM is sent or received, or when streams are closed,
stream connection error flag is set. Previously, only stream state was
changed, which resulted in setting the error flag only after calling
recv()/send()/send_chain(). However, there are cases when none of these
functions is called, but it's still important to know if the stream is being
closed. For example, when an HTTP/3 request stream is blocked on insert count,
receiving RESET_STREAM should trigger stream closure, which was not the case.
The change also fixes ngx_http_upstream_check_broken_connection() and
ngx_http_test_reading() with QUIC streams.
author | Roman Arutyunyan <arut@nginx.com> |
---|---|
date | Tue, 10 Jan 2023 17:42:40 +0400 |
parents | 6d1488b62dc5 |
children |
rev | line source |
---|---|
8269 | 1 /* AUTO-GENERATED, DO NOT EDIT. */ |
2 | |
3 #include <stddef.h> | |
4 #include <stdint.h> | |
5 | |
6 #include "ngx_bpf.h" | |
7 | |
8 | |
9 static ngx_bpf_reloc_t bpf_reloc_prog_ngx_quic_reuseport_helper[] = { | |
8356
85e60c064728
QUIC: bpf code regenerated.
Vladimir Homutov <vl@nginx.com>
parents:
8269
diff
changeset
|
10 { "ngx_quic_sockmap", 55 }, |
8269 | 11 }; |
12 | |
13 static struct bpf_insn bpf_insn_prog_ngx_quic_reuseport_helper[] = { | |
14 /* opcode dst src offset imm */ | |
15 { 0x79, BPF_REG_4, BPF_REG_1, (int16_t) 0, 0x0 }, | |
16 { 0x79, BPF_REG_3, BPF_REG_1, (int16_t) 8, 0x0 }, | |
17 { 0xbf, BPF_REG_2, BPF_REG_4, (int16_t) 0, 0x0 }, | |
18 { 0x7, BPF_REG_2, BPF_REG_0, (int16_t) 0, 0x8 }, | |
8356
85e60c064728
QUIC: bpf code regenerated.
Vladimir Homutov <vl@nginx.com>
parents:
8269
diff
changeset
|
19 { 0x2d, BPF_REG_2, BPF_REG_3, (int16_t) 54, 0x0 }, |
8269 | 20 { 0xbf, BPF_REG_5, BPF_REG_4, (int16_t) 0, 0x0 }, |
21 { 0x7, BPF_REG_5, BPF_REG_0, (int16_t) 0, 0x9 }, | |
8356
85e60c064728
QUIC: bpf code regenerated.
Vladimir Homutov <vl@nginx.com>
parents:
8269
diff
changeset
|
22 { 0x2d, BPF_REG_5, BPF_REG_3, (int16_t) 51, 0x0 }, |
8269 | 23 { 0xb7, BPF_REG_5, BPF_REG_0, (int16_t) 0, 0x14 }, |
24 { 0xb7, BPF_REG_0, BPF_REG_0, (int16_t) 0, 0x9 }, | |
25 { 0x71, BPF_REG_6, BPF_REG_2, (int16_t) 0, 0x0 }, | |
26 { 0x67, BPF_REG_6, BPF_REG_0, (int16_t) 0, 0x38 }, | |
27 { 0xc7, BPF_REG_6, BPF_REG_0, (int16_t) 0, 0x38 }, | |
28 { 0x65, BPF_REG_6, BPF_REG_0, (int16_t) 10, 0xffffffff }, | |
29 { 0xbf, BPF_REG_2, BPF_REG_4, (int16_t) 0, 0x0 }, | |
30 { 0x7, BPF_REG_2, BPF_REG_0, (int16_t) 0, 0xd }, | |
8356
85e60c064728
QUIC: bpf code regenerated.
Vladimir Homutov <vl@nginx.com>
parents:
8269
diff
changeset
|
31 { 0x2d, BPF_REG_2, BPF_REG_3, (int16_t) 42, 0x0 }, |
8269 | 32 { 0xbf, BPF_REG_5, BPF_REG_4, (int16_t) 0, 0x0 }, |
33 { 0x7, BPF_REG_5, BPF_REG_0, (int16_t) 0, 0xe }, | |
8356
85e60c064728
QUIC: bpf code regenerated.
Vladimir Homutov <vl@nginx.com>
parents:
8269
diff
changeset
|
34 { 0x2d, BPF_REG_5, BPF_REG_3, (int16_t) 39, 0x0 }, |
8269 | 35 { 0xb7, BPF_REG_0, BPF_REG_0, (int16_t) 0, 0xe }, |
8356
85e60c064728
QUIC: bpf code regenerated.
Vladimir Homutov <vl@nginx.com>
parents:
8269
diff
changeset
|
36 { 0x71, BPF_REG_5, BPF_REG_2, (int16_t) 0, 0x0 }, |
8269 | 37 { 0xb7, BPF_REG_6, BPF_REG_0, (int16_t) 0, 0x8 }, |
8356
85e60c064728
QUIC: bpf code regenerated.
Vladimir Homutov <vl@nginx.com>
parents:
8269
diff
changeset
|
38 { 0x2d, BPF_REG_6, BPF_REG_5, (int16_t) 35, 0x0 }, |
8269 | 39 { 0xf, BPF_REG_5, BPF_REG_0, (int16_t) 0, 0x0 }, |
40 { 0xf, BPF_REG_4, BPF_REG_5, (int16_t) 0, 0x0 }, | |
8356
85e60c064728
QUIC: bpf code regenerated.
Vladimir Homutov <vl@nginx.com>
parents:
8269
diff
changeset
|
41 { 0x2d, BPF_REG_4, BPF_REG_3, (int16_t) 32, 0x0 }, |
8269 | 42 { 0xbf, BPF_REG_4, BPF_REG_2, (int16_t) 0, 0x0 }, |
43 { 0x7, BPF_REG_4, BPF_REG_0, (int16_t) 0, 0x9 }, | |
8356
85e60c064728
QUIC: bpf code regenerated.
Vladimir Homutov <vl@nginx.com>
parents:
8269
diff
changeset
|
44 { 0x2d, BPF_REG_4, BPF_REG_3, (int16_t) 29, 0x0 }, |
8269 | 45 { 0x71, BPF_REG_4, BPF_REG_2, (int16_t) 1, 0x0 }, |
46 { 0x67, BPF_REG_4, BPF_REG_0, (int16_t) 0, 0x38 }, | |
47 { 0x71, BPF_REG_3, BPF_REG_2, (int16_t) 2, 0x0 }, | |
48 { 0x67, BPF_REG_3, BPF_REG_0, (int16_t) 0, 0x30 }, | |
49 { 0x4f, BPF_REG_3, BPF_REG_4, (int16_t) 0, 0x0 }, | |
50 { 0x71, BPF_REG_4, BPF_REG_2, (int16_t) 3, 0x0 }, | |
51 { 0x67, BPF_REG_4, BPF_REG_0, (int16_t) 0, 0x28 }, | |
52 { 0x4f, BPF_REG_3, BPF_REG_4, (int16_t) 0, 0x0 }, | |
53 { 0x71, BPF_REG_4, BPF_REG_2, (int16_t) 4, 0x0 }, | |
54 { 0x67, BPF_REG_4, BPF_REG_0, (int16_t) 0, 0x20 }, | |
55 { 0x4f, BPF_REG_3, BPF_REG_4, (int16_t) 0, 0x0 }, | |
56 { 0x71, BPF_REG_4, BPF_REG_2, (int16_t) 5, 0x0 }, | |
8356
85e60c064728
QUIC: bpf code regenerated.
Vladimir Homutov <vl@nginx.com>
parents:
8269
diff
changeset
|
57 { 0x67, BPF_REG_4, BPF_REG_0, (int16_t) 0, 0x18 }, |
8269 | 58 { 0x4f, BPF_REG_3, BPF_REG_4, (int16_t) 0, 0x0 }, |
59 { 0x71, BPF_REG_4, BPF_REG_2, (int16_t) 6, 0x0 }, | |
60 { 0x67, BPF_REG_4, BPF_REG_0, (int16_t) 0, 0x10 }, | |
61 { 0x4f, BPF_REG_3, BPF_REG_4, (int16_t) 0, 0x0 }, | |
62 { 0x71, BPF_REG_4, BPF_REG_2, (int16_t) 7, 0x0 }, | |
63 { 0x67, BPF_REG_4, BPF_REG_0, (int16_t) 0, 0x8 }, | |
64 { 0x4f, BPF_REG_3, BPF_REG_4, (int16_t) 0, 0x0 }, | |
65 { 0x71, BPF_REG_2, BPF_REG_2, (int16_t) 8, 0x0 }, | |
66 { 0x4f, BPF_REG_3, BPF_REG_2, (int16_t) 0, 0x0 }, | |
67 { 0x7b, BPF_REG_10, BPF_REG_3, (int16_t) 65528, 0x0 }, | |
68 { 0xbf, BPF_REG_3, BPF_REG_10, (int16_t) 0, 0x0 }, | |
69 { 0x7, BPF_REG_3, BPF_REG_0, (int16_t) 0, 0xfffffff8 }, | |
70 { 0x18, BPF_REG_2, BPF_REG_0, (int16_t) 0, 0x0 }, | |
71 { 0x0, BPF_REG_0, BPF_REG_0, (int16_t) 0, 0x0 }, | |
72 { 0xb7, BPF_REG_4, BPF_REG_0, (int16_t) 0, 0x0 }, | |
73 { 0x85, BPF_REG_0, BPF_REG_0, (int16_t) 0, 0x52 }, | |
74 { 0xb7, BPF_REG_0, BPF_REG_0, (int16_t) 0, 0x1 }, | |
75 { 0x95, BPF_REG_0, BPF_REG_0, (int16_t) 0, 0x0 }, | |
76 }; | |
77 | |
78 | |
79 ngx_bpf_program_t ngx_quic_reuseport_helper = { | |
80 .relocs = bpf_reloc_prog_ngx_quic_reuseport_helper, | |
81 .nrelocs = sizeof(bpf_reloc_prog_ngx_quic_reuseport_helper) | |
82 / sizeof(bpf_reloc_prog_ngx_quic_reuseport_helper[0]), | |
83 .ins = bpf_insn_prog_ngx_quic_reuseport_helper, | |
84 .nins = sizeof(bpf_insn_prog_ngx_quic_reuseport_helper) | |
85 / sizeof(bpf_insn_prog_ngx_quic_reuseport_helper[0]), | |
86 .license = "BSD", | |
87 .type = BPF_PROG_TYPE_SK_REUSEPORT, | |
88 }; |