[nginx] Win32: improved fallback on FormatMessage() errors.

Maxim Dounin mdounin at mdounin.ru
Mon Oct 21 16:10:28 UTC 2019


details:   https://hg.nginx.org/nginx/rev/746567d633ac
branches:  
changeset: 7585:746567d633ac
user:      Maxim Dounin <mdounin at mdounin.ru>
date:      Mon Oct 21 19:06:12 2019 +0300
description:
Win32: improved fallback on FormatMessage() errors.

FormatMessage() seems to return many errors which essentially indicate that
the language in question is not available.  At least the following were
observed in the wild and during testing: ERROR_MUI_FILE_NOT_FOUND (15100)
(ticket #1868), ERROR_RESOURCE_TYPE_NOT_FOUND (1813).  While documentation
says it should be ERROR_RESOURCE_LANG_NOT_FOUND (1815), this doesn't seem
to be the case.

As such, checking error code was removed, and as long as FormatMessage()
returns an error, we now always try the default language.

diffstat:

 src/os/win32/ngx_errno.c |  2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diffs (12 lines):

diff --git a/src/os/win32/ngx_errno.c b/src/os/win32/ngx_errno.c
--- a/src/os/win32/ngx_errno.c
+++ b/src/os/win32/ngx_errno.c
@@ -22,7 +22,7 @@ ngx_strerror(ngx_err_t err, u_char *errs
     len = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
                         NULL, err, lang, (char *) errstr, size, NULL);
 
-    if (len == 0 && lang && GetLastError() == ERROR_RESOURCE_LANG_NOT_FOUND) {
+    if (len == 0 && lang) {
 
         /*
          * Try to use English messages first and fallback to a language,


More information about the nginx-devel mailing list