[nginx] Fixed format specifiers.
details: https://hg.nginx.org/nginx/rev/bd4d1b9db0ee branches: changeset: 7655:bd4d1b9db0ee user: Sergey Kandaurov date: Sat May 23 15:53:08 2020 +0300 description: Fixed format specifiers. diffstat: src/event/ngx_event_openssl_stapling.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diffs (21 lines): diff -r b56f725dd4bb -r bd4d1b9db0ee src/event/ngx_event_openssl_stapling.c --- a/src/event/ngx_event_openssl_stapling.cFri May 22 17:25:27 2020 +0300 +++ b/src/event/ngx_event_openssl_stapling.cSat May 23 15:53:08 2020 +0300 @@ -948,7 +948,7 @@ ngx_ssl_ocsp_validate(ngx_connection_t * } ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, - "ssl ocsp validate, certs:%i", sk_X509_num(ocsp->certs)); + "ssl ocsp validate, certs:%d", sk_X509_num(ocsp->certs)); ngx_ssl_ocsp_validate_next(c); @@ -2661,7 +2661,7 @@ ngx_ssl_ocsp_create_key(ngx_ssl_ocsp_ctx ngx_hex_dump(buf, ctx->key.data, ctx->key.len); ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ctx->log, 0, - "ssl ocsp key %*s", 120, buf); + "ssl ocsp key %*s", sizeof(buf), buf); } #endif ___ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel
[njs] Fixed Array.prototype.sort() according to the specification.
details: https://hg.nginx.org/njs/rev/1d0825906438 branches: changeset: 1397:1d0825906438 user: Dmitry Volyntsev date: Mon May 25 14:21:22 2020 + description: Fixed Array.prototype.sort() according to the specification. diffstat: src/njs_arr.c|4 +- src/njs_arr.h|8 +- src/njs_array.c | 363 +- src/test/njs_unit_test.c | 89 ++- 4 files changed, 344 insertions(+), 120 deletions(-) diffs (565 lines): diff -r 0287ae53cbb1 -r 1d0825906438 src/njs_arr.c --- a/src/njs_arr.c Mon May 11 09:58:28 2020 +0300 +++ b/src/njs_arr.c Mon May 25 14:21:22 2020 + @@ -111,7 +111,7 @@ njs_arr_add_multiple(njs_arr_t *arr, njs old = arr->start; arr->start = start; -memcpy(start, old, (uint32_t) arr->items * arr->item_size); +memcpy(start, old, arr->items * arr->item_size); if (arr->separate == 0) { arr->separate = 1; @@ -121,7 +121,7 @@ njs_arr_add_multiple(njs_arr_t *arr, njs } } -item = (char *) arr->start + (uint32_t) arr->items * arr->item_size; +item = (char *) arr->start + arr->items * arr->item_size; arr->items = items; diff -r 0287ae53cbb1 -r 1d0825906438 src/njs_arr.h --- a/src/njs_arr.h Mon May 11 09:58:28 2020 +0300 +++ b/src/njs_arr.h Mon May 25 14:21:22 2020 + @@ -11,11 +11,11 @@ typedef struct { void *start; /* - * A array can hold no more than 65536 items. - * The item size is no more than 64K. + * A array can hold no more than 2**32 items. + * the item size is no more than 64K. */ -uint16_t items; -uint16_t available; +uint32_t items; +uint32_t available; uint16_t item_size; uint8_t pointer; diff -r 0287ae53cbb1 -r 1d0825906438 src/njs_array.c --- a/src/njs_array.c Mon May 11 09:58:28 2020 +0300 +++ b/src/njs_array.c Mon May 25 14:21:22 2020 + @@ -3046,47 +3046,126 @@ unexpected_args: } -static njs_int_t -njs_array_string_sort(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs, -njs_index_t unused) +typedef struct { +njs_value_tvalue; +njs_value_t*str; +int64_tpos; +} njs_array_sort_slot_t; + + +typedef struct { +njs_vm_t *vm; +njs_function_t *function; +njs_bool_t exception; + +njs_arr_t strings; +} njs_array_sort_ctx_t; + + +static int +njs_array_compare(const void *a, const void *b, void *c) { -njs_int_t ret; -njs_uint_t i; - -for (i = 1; i < nargs; i++) { -if (!njs_is_string(&args[i])) { -ret = njs_value_to_string(vm, &args[i], &args[i]); -if (ret != NJS_OK) { -return ret; -} +double num; +njs_int_t ret; +njs_value_targuments[3], retval; +njs_array_sort_ctx_t *ctx; +njs_array_sort_slot_t *aslot, *bslot; + +ctx = c; + +if (ctx->exception) { +return 0; +} + +aslot = (njs_array_sort_slot_t *) a; +bslot = (njs_array_sort_slot_t *) b; + +if (ctx->function != NULL) { +njs_set_undefined(&arguments[0]); +arguments[1] = aslot->value; +arguments[2] = bslot->value; + +ret = njs_function_apply(ctx->vm, ctx->function, arguments, 3, &retval); +if (njs_slow_path(ret != NJS_OK)) { +goto exception; +} + +ret = njs_value_to_number(ctx->vm, &retval, &num); +if (njs_slow_path(ret != NJS_OK)) { +goto exception; +} + +if (njs_slow_path(isnan(num))) { +return 0; +} + +if (num != 0) { +return (num > 0) - (num < 0); +} + +goto compare_same; +} + +if (aslot->str == NULL) { +aslot->str = njs_arr_add(&ctx->strings); +ret = njs_value_to_string(ctx->vm, aslot->str, &aslot->value); +if (njs_slow_path(ret != NJS_OK)) { +goto exception; } } -ret = njs_string_cmp(&args[1], &args[2]); - -njs_set_number(&vm->retval, ret); - -return NJS_OK; +if (bslot->str == NULL) { +bslot->str = njs_arr_add(&ctx->strings); +ret = njs_value_to_string(ctx->vm, bslot->str, &bslot->value); +if (njs_slow_path(ret != NJS_OK)) { +goto exception; +} +} + +ret = njs_string_cmp(aslot->str, bslot->str); + +if (ret != 0) { +return ret; +} + +compare_same: + +/* Ensures stable sorting. */ + +return (aslot->pos > bslot->pos) - (aslot->pos < bslot->pos); + +exception: + +ctx->exception = 1; + +return 0; } -static const njs_function_t njs_array_string_sort_function = { -.object = { .type = NJS_FUNCTION, .shared = 1, .extensible = 1 }, -.native = 1, -.args_offset = 1, -.u.native = nj
[njs] Introduced quick sort implementation.
details: https://hg.nginx.org/njs/rev/4fe4575ff3de branches: changeset: 1394:4fe4575ff3de user: Dmitry Volyntsev date: Mon May 25 14:21:20 2020 + description: Introduced quick sort implementation. diffstat: auto/sources|1 + src/njs_array.c |6 +- src/njs_main.h |1 + src/njs_utils.c | 330 src/njs_utils.h | 16 ++ src/test/njs_unit_test.c| 130 + src/test/rbtree_unit_test.c |6 +- 7 files changed, 484 insertions(+), 6 deletions(-) diffs (576 lines): diff -r ab19ee68d945 -r 4fe4575ff3de auto/sources --- a/auto/sources Mon May 25 14:21:14 2020 + +++ b/auto/sources Mon May 25 14:21:20 2020 + @@ -20,6 +20,7 @@ NJS_LIB_SRCS=" \ src/njs_malloc.c \ src/njs_mp.c \ src/njs_sprintf.c \ + src/njs_utils.c \ src/njs_chb.c \ src/njs_value.c \ src/njs_vm.c \ diff -r ab19ee68d945 -r 4fe4575ff3de src/njs_array.c --- a/src/njs_array.c Mon May 25 14:21:14 2020 + +++ b/src/njs_array.c Mon May 25 14:21:20 2020 + @@ -1522,7 +1522,7 @@ njs_array_prototype_join(njs_vm_t *vm, n static int -njs_array_indices_handler(const void *first, const void *second) +njs_array_indices_handler(const void *first, const void *second, void *ctx) { double num1, num2; int64_tdiff; @@ -1572,8 +1572,8 @@ njs_array_keys(njs_vm_t *vm, njs_value_t return NULL; } -qsort(keys->start, keys->length, sizeof(njs_value_t), - njs_array_indices_handler); +njs_qsort(keys->start, keys->length, sizeof(njs_value_t), + njs_array_indices_handler, NULL); return keys; } diff -r ab19ee68d945 -r 4fe4575ff3de src/njs_main.h --- a/src/njs_main.hMon May 25 14:21:14 2020 + +++ b/src/njs_main.hMon May 25 14:21:20 2020 + @@ -32,6 +32,7 @@ #include #include #include +#include #include #include diff -r ab19ee68d945 -r 4fe4575ff3de src/njs_utils.c --- /dev/null Thu Jan 01 00:00:00 1970 + +++ b/src/njs_utils.c Mon May 25 14:21:20 2020 + @@ -0,0 +1,330 @@ + +/* + * Copyright (C) Dmitry Volyntsev + * Copyright (C) NGINX, Inc. + */ + + +#include + + +typedef void (*njs_swap_t) (void *a, void *b, size_t size); + + +njs_inline void +njs_swap_u8(void *a, void *b, size_t size) +{ +uint8_t u, *au, *bu; + +au = (uint8_t *) a; +bu = (uint8_t *) b; + +u = au[0]; +au[0] = bu[0]; +bu[0] = u; +} + + +njs_inline void +njs_swap_u16(void *a, void *b, size_t size) +{ +uint16_t u, *au, *bu; + +au = (uint16_t *) a; +bu = (uint16_t *) b; + +u = au[0]; +au[0] = bu[0]; +bu[0] = u; +} + + +njs_inline void +njs_swap_u32(void *a, void *b, size_t size) +{ +uint32_t u, *au, *bu; + +au = (uint32_t *) a; +bu = (uint32_t *) b; + +u = au[0]; +au[0] = bu[0]; +bu[0] = u; +} + + +njs_inline void +njs_swap_u64(void *a, void *b, size_t size) +{ +uint64_t u, *au, *bu; + +au = (uint64_t *) a; +bu = (uint64_t *) b; + +u = au[0]; +au[0] = bu[0]; +bu[0] = u; +} + + +njs_inline void +njs_swap_u128(void *a, void *b, size_t size) +{ +uint64_t u, v, *au, *bu; + +au = (uint64_t *) a; +bu = (uint64_t *) b; + +u = au[0]; +v = au[1]; +au[0] = bu[0]; +au[1] = bu[1]; +bu[0] = u; +bu[1] = v; +} + + +njs_inline void +njs_swap_u128x(void *a, void *b, size_t size) +{ +uint64_t u, v, *au, *bu; + +au = (uint64_t *) a; +bu = (uint64_t *) b; + +do { +u = au[0]; +v = au[1]; +au[0] = bu[0]; +au[1] = bu[1]; +bu[0] = u; +bu[1] = v; + +size -= sizeof(uint64_t) * 2; + +au += 2; +bu += 2; +} while (size != 0); +} + + +njs_inline void +njs_swap_bytes(void *a, void *b, size_t size) +{ +uint8_t u, *au, *bu; + +au = (uint8_t *) a; +bu = (uint8_t *) b; + +while (size-- != 0) { +u = *au; +*au++ = *bu; +*bu++ = u; +} +} + + +njs_inline njs_swap_t +njs_choose_swap(size_t size) +{ +switch (size) { +case 2: +return njs_swap_u16; +case 4: +return njs_swap_u32; +case 8: +return njs_swap_u64; +case 16: +return njs_swap_u128; +default: +if ((size % 16) == 0) { +return njs_swap_u128x; +} + +if (size == 1) { +return njs_swap_u8; +} +} + +return njs_swap_bytes; +} + + +njs_inline void +njs_sift_down(u_char *base, njs_sort_cmp_t cmp, njs_swap_t swap, size_t n, +size_t esize, void *ctx, njs_uint_t i) +{ +njs_uint_t c, m; + +m = i; + +while (1) { +c = 2 * i + esize; + +if (c < n && cmp(base + m, base + c, ctx) < 0) { +m = c; +} + +c += esize; + +if (c < n && cmp(base + m, base + c, ctx) < 0) { +m = c; +} + +if (m == i) { +
[njs] Introduced njs_errno_string().
details: https://hg.nginx.org/njs/rev/6c46a9004ad8 branches: changeset: 1395:6c46a9004ad8 user: Artem S. Povalyukhin date: Mon May 11 09:58:28 2020 +0300 description: Introduced njs_errno_string(). diffstat: src/njs_utils.c | 337 src/njs_utils.h |2 + 2 files changed, 339 insertions(+), 0 deletions(-) diffs (354 lines): diff -r 4fe4575ff3de -r 6c46a9004ad8 src/njs_utils.c --- a/src/njs_utils.c Mon May 25 14:21:20 2020 + +++ b/src/njs_utils.c Mon May 11 09:58:28 2020 +0300 @@ -328,3 +328,340 @@ njs_qsort(void *arr, size_t n, size_t es } } } + + +#define njs_errno_case(e) \ +case e: \ +return #e; + + +const char* +njs_errno_string(int errnum) +{ +switch (errnum) { +#ifdef EACCES +njs_errno_case(EACCES); +#endif + +#ifdef EADDRINUSE +njs_errno_case(EADDRINUSE); +#endif + +#ifdef EADDRNOTAVAIL +njs_errno_case(EADDRNOTAVAIL); +#endif + +#ifdef EAFNOSUPPORT +njs_errno_case(EAFNOSUPPORT); +#endif + +#ifdef EAGAIN +njs_errno_case(EAGAIN); +#endif + +#ifdef EWOULDBLOCK +#if EAGAIN != EWOULDBLOCK +njs_errno_case(EWOULDBLOCK); +#endif +#endif + +#ifdef EALREADY +njs_errno_case(EALREADY); +#endif + +#ifdef EBADF +njs_errno_case(EBADF); +#endif + +#ifdef EBADMSG +njs_errno_case(EBADMSG); +#endif + +#ifdef EBUSY +njs_errno_case(EBUSY); +#endif + +#ifdef ECANCELED +njs_errno_case(ECANCELED); +#endif + +#ifdef ECHILD +njs_errno_case(ECHILD); +#endif + +#ifdef ECONNABORTED +njs_errno_case(ECONNABORTED); +#endif + +#ifdef ECONNREFUSED +njs_errno_case(ECONNREFUSED); +#endif + +#ifdef ECONNRESET +njs_errno_case(ECONNRESET); +#endif + +#ifdef EDEADLK +njs_errno_case(EDEADLK); +#endif + +#ifdef EDESTADDRREQ +njs_errno_case(EDESTADDRREQ); +#endif + +#ifdef EDOM +njs_errno_case(EDOM); +#endif + +#ifdef EDQUOT +njs_errno_case(EDQUOT); +#endif + +#ifdef EEXIST +njs_errno_case(EEXIST); +#endif + +#ifdef EFAULT +njs_errno_case(EFAULT); +#endif + +#ifdef EFBIG +njs_errno_case(EFBIG); +#endif + +#ifdef EHOSTUNREACH +njs_errno_case(EHOSTUNREACH); +#endif + +#ifdef EIDRM +njs_errno_case(EIDRM); +#endif + +#ifdef EILSEQ +njs_errno_case(EILSEQ); +#endif + +#ifdef EINPROGRESS +njs_errno_case(EINPROGRESS); +#endif + +#ifdef EINTR +njs_errno_case(EINTR); +#endif + +#ifdef EINVAL +njs_errno_case(EINVAL); +#endif + +#ifdef EIO +njs_errno_case(EIO); +#endif + +#ifdef EISCONN +njs_errno_case(EISCONN); +#endif + +#ifdef EISDIR +njs_errno_case(EISDIR); +#endif + +#ifdef ELOOP +njs_errno_case(ELOOP); +#endif + +#ifdef EMFILE +njs_errno_case(EMFILE); +#endif + +#ifdef EMLINK +njs_errno_case(EMLINK); +#endif + +#ifdef EMSGSIZE +njs_errno_case(EMSGSIZE); +#endif + +#ifdef EMULTIHOP +njs_errno_case(EMULTIHOP); +#endif + +#ifdef ENAMETOOLONG +njs_errno_case(ENAMETOOLONG); +#endif + +#ifdef ENETDOWN +njs_errno_case(ENETDOWN); +#endif + +#ifdef ENETRESET +njs_errno_case(ENETRESET); +#endif + +#ifdef ENETUNREACH +njs_errno_case(ENETUNREACH); +#endif + +#ifdef ENFILE +njs_errno_case(ENFILE); +#endif + +#ifdef ENOBUFS +njs_errno_case(ENOBUFS); +#endif + +#ifdef ENODATA +njs_errno_case(ENODATA); +#endif + +#ifdef ENODEV +njs_errno_case(ENODEV); +#endif + +#ifdef ENOENT +njs_errno_case(ENOENT); +#endif + +#ifdef ENOEXEC +njs_errno_case(ENOEXEC); +#endif + +#ifdef ENOLINK +njs_errno_case(ENOLINK); +#endif + +#ifdef ENOLCK +#if ENOLINK != ENOLCK +njs_errno_case(ENOLCK); +#endif +#endif + +#ifdef ENOMEM +njs_errno_case(ENOMEM); +#endif + +#ifdef ENOMSG +njs_errno_case(ENOMSG); +#endif + +#ifdef ENOPROTOOPT +njs_errno_case(ENOPROTOOPT); +#endif + +#ifdef ENOSPC +njs_errno_case(ENOSPC); +#endif + +#ifdef ENOSR +njs_errno_case(ENOSR); +#endif + +#ifdef ENOSTR +njs_errno_case(ENOSTR); +#endif + +#ifdef ENOSYS +njs_errno_case(ENOSYS); +#endif + +#ifdef ENOTCONN +njs_errno_case(ENOTCONN); +#endif + +#ifdef ENOTDIR +njs_errno_case(ENOTDIR); +#endif + +#ifdef ENOTEMPTY +#if ENOTEMPTY != EEXIST +njs_errno_case(ENOTEMPTY); +#endif +#endif + +#ifdef ENOTSOCK +njs_errno_case(ENOTSOCK); +#endif + +#ifdef ENOTSUP +njs_errno_case(ENOTSUP); +#else +#ifdef EOPNOTSUPP +njs_errno_case(EOPNOTSUPP); +#endif +#endif + +#ifdef ENOTTY +njs_errno_case(ENOTTY); +#endif + +#ifdef ENXIO +njs_errno_case(ENXIO); +#endif + +#ifdef EOVERFLOW +njs_errno_case(EOVERFLOW); +#endif + +#ifdef EPERM +njs_errno_case(EPERM); +#endif + +#ifdef EPIPE +njs_errno_case(EPIPE); +#endif + +#ifdef EPROTO +njs_errno_case(EPROTO); +#endif + +#ifdef EPROTONOSUPPORT +njs_errno_case(EPROTONOSUPPORT); +#endif + +#ifdef EPROTOTYPE +njs_errno_case(EPROTOTYPE); +#endif + +#ifdef ERANGE +njs_errno_case(ERANGE); +#en
[njs] Version bump.
details: https://hg.nginx.org/njs/rev/ab19ee68d945 branches: changeset: 1393:ab19ee68d945 user: Dmitry Volyntsev date: Mon May 25 14:21:14 2020 + description: Version bump. diffstat: src/njs.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diffs (12 lines): diff -r 46ec2411fb7c -r ab19ee68d945 src/njs.h --- a/src/njs.h Tue May 19 11:42:11 2020 + +++ b/src/njs.h Mon May 25 14:21:14 2020 + @@ -11,7 +11,7 @@ #include -#define NJS_VERSION "0.4.1" +#define NJS_VERSION "0.4.2" #include /* STDOUT_FILENO, STDERR_FILENO */ ___ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel
[njs] Introduced fs.Error.code.
details: https://hg.nginx.org/njs/rev/0287ae53cbb1 branches: changeset: 1396:0287ae53cbb1 user: Artem S. Povalyukhin date: Mon May 11 09:58:28 2020 +0300 description: Introduced fs.Error.code. diffstat: src/njs_fs.c | 16 test/js/fs_promises_002.js | 9 + test/js/fs_promises_004.js | 6 +++--- test/njs_expect_test.exp | 6 +++--- 4 files changed, 27 insertions(+), 10 deletions(-) diffs (128 lines): diff -r 6c46a9004ad8 -r 0287ae53cbb1 src/njs_fs.c --- a/src/njs_fs.c Mon May 11 09:58:28 2020 +0300 +++ b/src/njs_fs.c Mon May 11 09:58:28 2020 +0300 @@ -873,9 +873,11 @@ njs_fs_error(njs_vm_t *vm, const char *s size_tsize; njs_int_t ret; njs_value_t value; +const char*code; njs_object_t *error; static const njs_value_t string_errno = njs_string("errno"); +static const njs_value_t string_code = njs_string("code"); static const njs_value_t string_path = njs_string("path"); static const njs_value_t string_syscall = njs_string("syscall"); @@ -900,6 +902,20 @@ njs_fs_error(njs_vm_t *vm, const char *s if (njs_slow_path(ret != NJS_OK)) { return NJS_ERROR; } + +code = njs_errno_string(errn); +size = njs_strlen(code); + +ret = njs_string_new(vm, &value, (u_char *) code, size, size); +if (njs_slow_path(ret != NJS_OK)) { +return NJS_ERROR; +} + +ret = njs_value_property_set(vm, retval, njs_value_arg(&string_code), + &value); +if (njs_slow_path(ret != NJS_OK)) { +return NJS_ERROR; +} } if (path != NULL) { diff -r 6c46a9004ad8 -r 0287ae53cbb1 test/js/fs_promises_002.js --- a/test/js/fs_promises_002.jsMon May 11 09:58:28 2020 +0300 +++ b/test/js/fs_promises_002.jsMon May 11 09:58:28 2020 +0300 @@ -14,8 +14,7 @@ var testSync = new Promise((resolve, rej fs.accessSync(fname + '___'); failed = true; } catch(e) { -failed = (e.syscall != 'access'); -// TODO: e.code != 'ENOENT' +failed = (e.syscall != 'access') || e.code != 'ENOENT'; } resolve(failed); } catch (e) { @@ -33,7 +32,8 @@ var testCallback = new Promise((resolve, fs.access(fname, fs.constants.R_OK | fs.constants.W_OK, (err) => { failed |= (err !== undefined); fs.access(fname + '___', (err) => { -failed |= ((err === undefined) || (err.syscall != 'access')); +failed |= ((err === undefined) || (err.syscall != 'access') + || err.code != 'ENOENT'); resolve(failed); }); }); @@ -66,6 +66,7 @@ Promise.resolve() console.log('testPromise failed'); }) .catch((e) => { -console.log('testPromise ok', (e.syscall == 'access') && (e.path == fname + '___')); +console.log('testPromise ok', (e.syscall == 'access') && (e.path == fname + '___') + && e.code == 'ENOENT'); }) ; diff -r 6c46a9004ad8 -r 0287ae53cbb1 test/js/fs_promises_004.js --- a/test/js/fs_promises_004.jsMon May 11 09:58:28 2020 +0300 +++ b/test/js/fs_promises_004.jsMon May 11 09:58:28 2020 +0300 @@ -23,7 +23,7 @@ var testSync = () => new Promise((resolv fs.realpathSync(fname); throw new Error('fs.realpathSync error 1'); } catch (e) { -if (e.syscall != 'realpath') { // e.code +if (e.syscall != 'realpath' || e.code != 'ENOENT') { throw e; } } @@ -79,7 +79,7 @@ var testCallback = () => new Promise((re reject(new Error('fs.realpath error 1')); return; } -if (err.syscall != 'realpath') { +if (err.syscall != 'realpath' || err.code != 'ENOENT') { reject(err); return; } @@ -165,7 +165,7 @@ Promise.resolve() .then(() => fsp.realpath(fname) .then(() => { throw new Error('fsp.realpath error 1') })) .catch((e) => { -if (e.syscall != 'realpath') { +if (e.syscall != 'realpath' || e.code != 'ENOENT') { throw e; } }) diff -r 6c46a9004ad8 -r 0287ae53cbb1 test/njs_expect_test.exp --- a/test/njs_expect_test.exp Mon May 11 09:58:28 2020 +0300 +++ b/test/njs_expect_test.exp Mon May 11 09:58:28 2020 +0300 @@ -511,7 +511,7 @@ njs_test { {"var fs = require('fs'); \r\n" "undefined\r\n>> "} {"fs.readFile('test/fs/nonexistent', 'utf8', function (e) {console.log(JSON.stringify(e))})\r\n" - "undefined\r\n{\"errno\":2,\"path\":\"test/fs/nonexistent\",\"syscall\":\"open\"}\r\n>> "} + "undefined\r\n{\"errno\":2,\"code\":\"ENOENT\",\"path\":\"test/fs/nonexistent\",\"syscall\":\"open\"}\r\n>> "} } njs_test { @@ -571,7 +
[nginx] HTTP/2: invalid connection preface logging (ticket #1981).
details: https://hg.nginx.org/nginx/rev/7114d21bc2b1 branches: changeset: 7656:7114d21bc2b1 user: Maxim Dounin date: Mon May 25 18:33:42 2020 +0300 description: HTTP/2: invalid connection preface logging (ticket #1981). Previously, invalid connection preface errors were only logged at debug level, providing no visible feedback, in particular, when a plain text HTTP/2 listening socket is erroneously used for HTTP/1.x connections. Now these are explicitly logged at the info level, much like other client-related errors. diffstat: src/http/v2/ngx_http_v2.c | 10 -- 1 files changed, 4 insertions(+), 6 deletions(-) diffs (27 lines): diff -r bd4d1b9db0ee -r 7114d21bc2b1 src/http/v2/ngx_http_v2.c --- a/src/http/v2/ngx_http_v2.c Sat May 23 15:53:08 2020 +0300 +++ b/src/http/v2/ngx_http_v2.c Mon May 25 18:33:42 2020 +0300 @@ -731,9 +731,8 @@ ngx_http_v2_state_preface(ngx_http_v2_co } if (ngx_memcmp(pos, preface, sizeof(preface) - 1) != 0) { -ngx_log_debug2(NGX_LOG_DEBUG_HTTP, h2c->connection->log, 0, - "invalid http2 connection preface \"%*s\"", - sizeof(preface) - 1, pos); +ngx_log_error(NGX_LOG_INFO, h2c->connection->log, 0, + "invalid connection preface"); return ngx_http_v2_connection_error(h2c, NGX_HTTP_V2_PROTOCOL_ERROR); } @@ -754,9 +753,8 @@ ngx_http_v2_state_preface_end(ngx_http_v } if (ngx_memcmp(pos, preface, sizeof(preface) - 1) != 0) { -ngx_log_debug2(NGX_LOG_DEBUG_HTTP, h2c->connection->log, 0, - "invalid http2 connection preface \"%*s\"", - sizeof(preface) - 1, pos); +ngx_log_error(NGX_LOG_INFO, h2c->connection->log, 0, + "invalid connection preface"); return ngx_http_v2_connection_error(h2c, NGX_HTTP_V2_PROTOCOL_ERROR); } ___ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel
[nginx] Updated OpenSSL used for win32 builds.
details: https://hg.nginx.org/nginx/rev/02f2f129abc0 branches: changeset: 7657:02f2f129abc0 user: Maxim Dounin date: Mon May 25 22:10:37 2020 +0300 description: Updated OpenSSL used for win32 builds. diffstat: misc/GNUmakefile | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diffs (12 lines): diff -r 7114d21bc2b1 -r 02f2f129abc0 misc/GNUmakefile --- a/misc/GNUmakefile Mon May 25 18:33:42 2020 +0300 +++ b/misc/GNUmakefile Mon May 25 22:10:37 2020 +0300 @@ -6,7 +6,7 @@ TEMP = tmp CC = cl OBJS = objs.msvc8 -OPENSSL = openssl-1.1.1f +OPENSSL = openssl-1.1.1g ZLIB = zlib-1.2.11 PCRE = pcre-8.44 ___ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel