r2336, r2337, r2339, r2390 merge:
bugfixes in error logging: *) ngx_strerror_r() style and size == 0 bug fix *) increase ngx_conf_log_error() buffer *) always log an error code *) fix segfault on close error *) compact win32 errno logging
This commit is contained in:
parent
eed477d46e
commit
30fc974145
|
@ -201,14 +201,14 @@ done:
|
|||
if (filename) {
|
||||
ngx_free(cf->conf_file->buffer->start);
|
||||
|
||||
cf->conf_file = prev;
|
||||
|
||||
if (ngx_close_file(fd) == NGX_FILE_ERROR) {
|
||||
ngx_log_error(NGX_LOG_ALERT, cf->log, ngx_errno,
|
||||
ngx_close_file_n " %s failed",
|
||||
cf->conf_file->file.name.data);
|
||||
return NGX_CONF_ERROR;
|
||||
}
|
||||
|
||||
cf->conf_file = prev;
|
||||
}
|
||||
|
||||
if (rc == NGX_ERROR) {
|
||||
|
@ -853,31 +853,47 @@ void ngx_cdecl
|
|||
ngx_conf_log_error(ngx_uint_t level, ngx_conf_t *cf, ngx_err_t err,
|
||||
char *fmt, ...)
|
||||
{
|
||||
u_char errstr[NGX_MAX_CONF_ERRSTR], *buf, *last;
|
||||
u_char errstr[NGX_MAX_CONF_ERRSTR], *p, *last;
|
||||
va_list args;
|
||||
|
||||
last = errstr + NGX_MAX_CONF_ERRSTR;
|
||||
|
||||
va_start(args, fmt);
|
||||
buf = ngx_vsnprintf(errstr, last - errstr, fmt, args);
|
||||
p = ngx_vsnprintf(errstr, last - errstr, fmt, args);
|
||||
va_end(args);
|
||||
|
||||
*buf = '\0';
|
||||
|
||||
if (err) {
|
||||
buf = ngx_snprintf(buf, last - buf - 1, " (%d: ", err);
|
||||
buf = ngx_strerror_r(err, buf, last - buf - 1);
|
||||
*buf++ = ')';
|
||||
*buf = '\0';
|
||||
|
||||
if (p > last - 50) {
|
||||
|
||||
/* leave a space for an error code */
|
||||
|
||||
p = last - 50;
|
||||
*p++ = '.';
|
||||
*p++ = '.';
|
||||
*p++ = '.';
|
||||
}
|
||||
|
||||
#if (NGX_WIN32)
|
||||
p = ngx_snprintf(p, last - p, ((unsigned) err < 0x80000000)
|
||||
? " (%d: " : " (%Xd: ", err);
|
||||
#else
|
||||
p = ngx_snprintf(p, last - p, " (%d: ", err);
|
||||
#endif
|
||||
|
||||
p = ngx_strerror_r(err, p, last - p);
|
||||
|
||||
*p++ = ')';
|
||||
}
|
||||
|
||||
if (cf->conf_file == NULL) {
|
||||
ngx_log_error(level, cf->log, 0, "%s", errstr);
|
||||
ngx_log_error(level, cf->log, 0, "%*s", p - errstr, errstr);
|
||||
return;
|
||||
}
|
||||
|
||||
ngx_log_error(level, cf->log, 0, "%s in %s:%ui",
|
||||
errstr, cf->conf_file->file.name.data, cf->conf_file->line);
|
||||
ngx_log_error(level, cf->log, 0, "%*s in %s:%ui",
|
||||
p - errstr, errstr,
|
||||
cf->conf_file->file.name.data, cf->conf_file->line);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -71,7 +71,7 @@
|
|||
#define NGX_CONF_MODULE 0x464E4F43 /* "CONF" */
|
||||
|
||||
|
||||
#define NGX_MAX_CONF_ERRSTR 256
|
||||
#define NGX_MAX_CONF_ERRSTR 1024
|
||||
|
||||
|
||||
struct ngx_command_s {
|
||||
|
|
|
@ -127,18 +127,10 @@ ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
|
|||
}
|
||||
|
||||
#if (NGX_WIN32)
|
||||
|
||||
if ((unsigned) err >= 0x80000000) {
|
||||
p = ngx_snprintf(p, last - p, " (%Xd: ", err);
|
||||
|
||||
} else {
|
||||
p = ngx_snprintf(p, last - p, " (%d: ", err);
|
||||
}
|
||||
|
||||
p = ngx_snprintf(p, last - p, ((unsigned) err < 0x80000000)
|
||||
? " (%d: " : " (%Xd: ", err);
|
||||
#else
|
||||
|
||||
p = ngx_snprintf(p, last - p, " (%d: ", err);
|
||||
|
||||
#endif
|
||||
|
||||
p = ngx_strerror_r(err, p, last - p);
|
||||
|
|
|
@ -10,10 +10,11 @@
|
|||
|
||||
#if (NGX_HAVE_STRERROR_R)
|
||||
|
||||
u_char *ngx_strerror_r(int err, u_char *errstr, size_t size)
|
||||
u_char *
|
||||
ngx_strerror_r(int err, u_char *errstr, size_t size)
|
||||
{
|
||||
if (size == 0) {
|
||||
return 0;
|
||||
return errstr;
|
||||
}
|
||||
|
||||
errstr[0] = '\0';
|
||||
|
@ -32,12 +33,13 @@ u_char *ngx_strerror_r(int err, u_char *errstr, size_t size)
|
|||
|
||||
/* Linux strerror_r() */
|
||||
|
||||
u_char *ngx_strerror_r(int err, u_char *errstr, size_t size)
|
||||
u_char *
|
||||
ngx_strerror_r(int err, u_char *errstr, size_t size)
|
||||
{
|
||||
char *str;
|
||||
|
||||
if (size == 0) {
|
||||
return 0;
|
||||
return errstr;
|
||||
}
|
||||
|
||||
errstr[0] = '\0';
|
||||
|
|
|
@ -91,7 +91,8 @@ static ngx_str_t wsa_errors[] = {
|
|||
};
|
||||
|
||||
|
||||
u_char *ngx_strerror_r(ngx_err_t err, u_char *errstr, size_t size)
|
||||
u_char *
|
||||
ngx_strerror_r(ngx_err_t err, u_char *errstr, size_t size)
|
||||
{
|
||||
int n;
|
||||
u_int len;
|
||||
|
|
|
@ -36,13 +36,8 @@ ngx_message_box(char *title, ngx_uint_t type, ngx_err_t err,
|
|||
*p++ = '.';
|
||||
}
|
||||
|
||||
if ((unsigned) err >= 0x80000000) {
|
||||
p = ngx_snprintf(p, last - p, " (%Xd: ", err);
|
||||
|
||||
} else {
|
||||
p = ngx_snprintf(p, last - p, " (%d: ", err);
|
||||
}
|
||||
|
||||
p = ngx_snprintf(p, last - p, ((unsigned) err < 0x80000000)
|
||||
? " (%d: " : " (%Xd: ", err);
|
||||
p = ngx_strerror_r(err, p, last - p);
|
||||
|
||||
if (p < last) {
|
||||
|
|
Loading…
Reference in New Issue