annotate src/os/win32/ngx_errno.c @ 9274:46ecad404a29 default tip

Mail: reset imap tag to empty after authentication attempt. We need to reset the imap tag to empty after an authentication attempt completes, otherwise if the next line parsed is incomplete with no tag (e.g. empty line) then we use the "tag" from the previous buffer which is now definitely wrong and has been partially overwritten with the most recently read data (e.g. CRLF). An example before this patch: S: * OK IMAP4 ready C: foobar login a b S: foobar NO Incorrect username or password. C: S: S: obar BAD invalid command Then with this patch: S: * OK IMAP4 ready C: foobar login a b S: foobar NO Incorrect username or password. C: S: * BAD invalid command
author Rob Mueller <robm@fastmailteam.com>
date Wed, 15 May 2024 10:06:00 +0300
parents 746567d633ac
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2 /*
444
42d11f017717 nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents: 441
diff changeset
3 * Copyright (C) Igor Sysoev
4412
d620f497c50f Copyright updated.
Maxim Konovalov <maxim@nginx.com>
parents: 3787
diff changeset
4 * Copyright (C) Nginx, Inc.
441
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 186
diff changeset
5 */
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 186
diff changeset
6
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 186
diff changeset
7
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8 #include <ngx_config.h>
98
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 0
diff changeset
9 #include <ngx_core.h>
c9b243802a17 nginx-0.0.1-2003-05-30-18:27:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 0
diff changeset
10
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
11
2335
3d8ab5957202 ngx_strerror_r() style and size == 0 bug fix
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
12 u_char *
3787
e294f37401c0 use copied strerror() messages and autoconfigured sys_nerr value
Igor Sysoev <igor@sysoev.ru>
parents: 2770
diff changeset
13 ngx_strerror(ngx_err_t err, u_char *errstr, size_t size)
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
14 {
2770
e70ac6e13f31 fallback to neutral language in FormatMessage()
Igor Sysoev <igor@sysoev.ru>
parents: 2766
diff changeset
15 u_int len;
e70ac6e13f31 fallback to neutral language in FormatMessage()
Igor Sysoev <igor@sysoev.ru>
parents: 2766
diff changeset
16 static u_long lang = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US);
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
17
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
18 if (size == 0) {
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
19 return errstr;
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
20 }
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
21
2770
e70ac6e13f31 fallback to neutral language in FormatMessage()
Igor Sysoev <igor@sysoev.ru>
parents: 2766
diff changeset
22 len = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
e70ac6e13f31 fallback to neutral language in FormatMessage()
Igor Sysoev <igor@sysoev.ru>
parents: 2766
diff changeset
23 NULL, err, lang, (char *) errstr, size, NULL);
e70ac6e13f31 fallback to neutral language in FormatMessage()
Igor Sysoev <igor@sysoev.ru>
parents: 2766
diff changeset
24
7585
746567d633ac Win32: improved fallback on FormatMessage() errors.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4693
diff changeset
25 if (len == 0 && lang) {
2770
e70ac6e13f31 fallback to neutral language in FormatMessage()
Igor Sysoev <igor@sysoev.ru>
parents: 2766
diff changeset
26
e70ac6e13f31 fallback to neutral language in FormatMessage()
Igor Sysoev <igor@sysoev.ru>
parents: 2766
diff changeset
27 /*
e70ac6e13f31 fallback to neutral language in FormatMessage()
Igor Sysoev <igor@sysoev.ru>
parents: 2766
diff changeset
28 * Try to use English messages first and fallback to a language,
e70ac6e13f31 fallback to neutral language in FormatMessage()
Igor Sysoev <igor@sysoev.ru>
parents: 2766
diff changeset
29 * based on locale: non-English Windows have no English messages
e70ac6e13f31 fallback to neutral language in FormatMessage()
Igor Sysoev <igor@sysoev.ru>
parents: 2766
diff changeset
30 * at all. This way allows to use English messages at least on
e70ac6e13f31 fallback to neutral language in FormatMessage()
Igor Sysoev <igor@sysoev.ru>
parents: 2766
diff changeset
31 * Windows with MUI.
e70ac6e13f31 fallback to neutral language in FormatMessage()
Igor Sysoev <igor@sysoev.ru>
parents: 2766
diff changeset
32 */
e70ac6e13f31 fallback to neutral language in FormatMessage()
Igor Sysoev <igor@sysoev.ru>
parents: 2766
diff changeset
33
e70ac6e13f31 fallback to neutral language in FormatMessage()
Igor Sysoev <igor@sysoev.ru>
parents: 2766
diff changeset
34 lang = 0;
e70ac6e13f31 fallback to neutral language in FormatMessage()
Igor Sysoev <igor@sysoev.ru>
parents: 2766
diff changeset
35
e70ac6e13f31 fallback to neutral language in FormatMessage()
Igor Sysoev <igor@sysoev.ru>
parents: 2766
diff changeset
36 len = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
e70ac6e13f31 fallback to neutral language in FormatMessage()
Igor Sysoev <igor@sysoev.ru>
parents: 2766
diff changeset
37 NULL, err, lang, (char *) errstr, size, NULL);
e70ac6e13f31 fallback to neutral language in FormatMessage()
Igor Sysoev <igor@sysoev.ru>
parents: 2766
diff changeset
38 }
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
39
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 98
diff changeset
40 if (len == 0) {
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
41 return ngx_snprintf(errstr, size,
2740
e5a4be07c3eb axe incomplete support of Winsock error descriptions on NT
Igor Sysoev <igor@sysoev.ru>
parents: 2739
diff changeset
42 "FormatMessage() error:(%d)", GetLastError());
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
43 }
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
44
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
45 /* remove ".\r\n\0" */
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
46 while (errstr[len] == '\0' || errstr[len] == CR
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
47 || errstr[len] == LF || errstr[len] == '.')
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
48 {
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
49 --len;
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
50 }
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
51
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
52 return &errstr[++len];
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
53 }
3787
e294f37401c0 use copied strerror() messages and autoconfigured sys_nerr value
Igor Sysoev <igor@sysoev.ru>
parents: 2770
diff changeset
54
e294f37401c0 use copied strerror() messages and autoconfigured sys_nerr value
Igor Sysoev <igor@sysoev.ru>
parents: 2770
diff changeset
55
4693
f1a0de6eb505 Fixed return type of ngx_strerror_init().
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
56 ngx_int_t
3787
e294f37401c0 use copied strerror() messages and autoconfigured sys_nerr value
Igor Sysoev <igor@sysoev.ru>
parents: 2770
diff changeset
57 ngx_strerror_init(void)
e294f37401c0 use copied strerror() messages and autoconfigured sys_nerr value
Igor Sysoev <igor@sysoev.ru>
parents: 2770
diff changeset
58 {
e294f37401c0 use copied strerror() messages and autoconfigured sys_nerr value
Igor Sysoev <igor@sysoev.ru>
parents: 2770
diff changeset
59 return NGX_OK;
e294f37401c0 use copied strerror() messages and autoconfigured sys_nerr value
Igor Sysoev <igor@sysoev.ru>
parents: 2770
diff changeset
60 }