[nginx] Fixed format specifiers.

2020-05-25 Thread Sergey Kandaurov
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.

2020-05-25 Thread Dmitry Volyntsev
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.

2020-05-25 Thread Dmitry Volyntsev
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().

2020-05-25 Thread Dmitry Volyntsev
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.

2020-05-25 Thread Dmitry Volyntsev
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.

2020-05-25 Thread Dmitry Volyntsev
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).

2020-05-25 Thread Maxim Dounin
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.

2020-05-25 Thread Maxim Dounin
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