annotate src/misc/ngx_cpp_test_module.cpp @ 8456:c72d8839f427

Mail: fixed SMTP pipelining to send the response immediately. Previously, if there were some pipelined SMTP data in the buffer when a proxied connection with the backend was established, nginx called ngx_mail_proxy_handler() to send these data, and not tried to send the response to the last command. In most cases, this response was later sent along with the response to the pipelined command, but if for some reason client decides to wait for the response before finishing the next command this might result in a connection hang. Fix is to always call ngx_mail_proxy_handler() to send the response, and additionally post an event to send the pipelined data if needed.
author Maxim Dounin <mdounin@mdounin.ru>
date Wed, 19 May 2021 03:13:12 +0300
parents f1e6f65ddfeb
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2157
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1
5761
1d693deab8ae Style: fix typo.
Piotr Sikora <piotr@cloudflare.com>
parents: 4759
diff changeset
2 // stub module to test header files' C++ compatibility
2157
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
3
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
4 extern "C" {
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
5 #include <ngx_config.h>
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
6 #include <ngx_core.h>
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
7 #include <ngx_event.h>
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8 #include <ngx_event_connect.h>
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
9 #include <ngx_event_pipe.h>
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
10
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
11 #include <ngx_http.h>
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
12
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
13 #include <ngx_mail.h>
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
14 #include <ngx_mail_pop3_module.h>
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
15 #include <ngx_mail_imap_module.h>
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
16 #include <ngx_mail_smtp_module.h>
8180
f1e6f65ddfeb Cpp test: added stream.
Ruslan Ermilov <ru@nginx.com>
parents: 5761
diff changeset
17
f1e6f65ddfeb Cpp test: added stream.
Ruslan Ermilov <ru@nginx.com>
parents: 5761
diff changeset
18 #include <ngx_stream.h>
2157
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
19 }
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
20
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
21 // nginx header files should go before other, because they define 64-bit off_t
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
22 // #include <string>
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
23
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
24
4759
4c36e15651f7 Fixed compilation with -Wmissing-prototypes.
Ruslan Ermilov <ru@nginx.com>
parents: 2157
diff changeset
25 void ngx_cpp_test_handler(void *data);
4c36e15651f7 Fixed compilation with -Wmissing-prototypes.
Ruslan Ermilov <ru@nginx.com>
parents: 2157
diff changeset
26
2157
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
27 void
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
28 ngx_cpp_test_handler(void *data)
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
29 {
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
30 return;
69ef10ad7011 ngx_cpp_test_module
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
31 }