annotate src/os/unix/ngx_dlopen.c @ 9027:f9d7930d0eed quic

HTTP/3: skip empty request body buffers (ticket #2374). When client DATA frame header and its content come in different QUIC packets, it may happen that only the header is processed by the first ngx_http_v3_request_body_filter() call. In this case an empty request body buffer is added to r->request_body->bufs, which is later reused in a subsequent ngx_http_v3_request_body_filter() call without being removed from the body chain. As a result, rb->request_body->bufs ends up with two copies of the same buffer. The fix is to avoid adding empty request body buffers to r->request_body->bufs.
author Roman Arutyunyan <arut@nginx.com>
date Wed, 03 Aug 2022 16:59:51 +0400
parents 7142b04337d6
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6380
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2 /*
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 * Copyright (C) Maxim Dounin
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4 * Copyright (C) Nginx, Inc.
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 */
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8 #include <ngx_config.h>
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 #include <ngx_core.h>
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12 #if (NGX_HAVE_DLOPEN)
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14 char *
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15 ngx_dlerror(void)
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16 {
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 char *err;
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 err = (char *) dlerror();
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 if (err == NULL) {
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22 return "";
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23 }
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
24
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25 return err;
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26 }
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27
7142b04337d6 Dynamic modules: dlopen() support.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28 #endif