Commit Graph

3622 Commits

Author SHA1 Message Date
Saúl Ibarra Corretgé
b2e13b9f00 Revert "unix,win: simplify calculating polling timeout"
This reverts commit a35308306f.
The original commit introduced unforeseen regressions. See
https://github.com/libuv/libuv/pull/1096.

Fixes: https://github.com/libuv/libuv/pull/1096
PR-URL: https://github.com/libuv/libuv/pull/1102
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2016-10-21 11:51:54 -04:00
Brad King
0d586b7dd8 common: fix unused variable warning
The saved_data variable in uv_loop_close() is only used when
NDEBUG is defined. This commit makes the variable declaration
depend on NDEBUG as well.

PR-URL: https://github.com/libuv/libuv/pull/1093
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-10-19 13:43:33 -04:00
Will Speak
cded27b663 test: fix sign-compare warning
PR-URL: https://github.com/libuv/libuv/pull/1089
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-10-19 11:57:59 -04:00
Saúl Ibarra Corretgé
a35308306f unix,win: simplify calculating polling timeout
PR-URL: https://github.com/libuv/libuv/pull/1096
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
2016-10-17 12:20:33 +01:00
Santiago Gimeno
31e5d665d5
signal: replace pthread_once with uv_once
So it aborts in case `pthread_once` fails.

PR-URL: https://github.com/libuv/libuv/pull/1098
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-10-17 12:13:59 +02:00
Ben Noordhuis
d5db277377 win: silence -Wmaybe-uninitialized warning
The compiler is wrong about it being used uninitialized but the warning
is sufficiently annoying that I decided to squelch it.

PR-URL: https://github.com/libuv/libuv/pull/1097
Reviewed-By: Andrius Bentkus <andrius.bentkus@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-10-17 11:16:28 +02:00
Ben Noordhuis
d00de9321b win: remove unused static variables
default_loop_struct and default_loop_ptr seem to have been overlooked
in commit 32747c7 ("win,unix: move loop functions which have identical
implementations".)

PR-URL: https://github.com/libuv/libuv/pull/1097
Reviewed-By: Andrius Bentkus <andrius.bentkus@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-10-17 11:16:24 +02:00
Philippe Laferriere
f1863dae6b unix,win: add uv_translate_sys_error() public API
uv_translate_sys_error() was a private function for Windows.
This commit adds an equivalent function on other platforms, and
exposes it as public API.

Exposing this is useful in scenarios where the application uses
both libuv functions and platform-specific system calls and wants
to report errors uniformly as libuv errors.

Fixes: https://github.com/libuv/libuv/issues/79
PR-URL: https://github.com/libuv/libuv/pull/1060
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-10-16 17:47:42 -04:00
Brad King
6b35ca8616 unix: don't include CoreServices globally on macOS
In unix/internal.h, CoreServices is included for AvailabilityMacros.h.
This commit just includes AvailabilityMacros.h directly instead.

PR-URL: https://github.com/libuv/libuv/pull/1092
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-10-16 13:35:47 -04:00
Ben Noordhuis
3064ae98e5 unix: don't malloc in uv_thread_create()
Simplify and optimize uv_thread_create() by casting the function pointer
to the prototype that pthread_create() wants.  Avoids the indirection of
an intermediate callback and heap-allocating custom state that is really
only there to placate the compiler.

PR-URL: https://github.com/libuv/libuv/pull/1094
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-10-16 19:28:17 +02:00
Ben Noordhuis
538782fbda test: make threadpool saturation reliable
Use a deterministic approach for saturating the threadpool instead of
depending on a timeout.  Should help reduce the flakiness of the CI.

PR-URL: https://github.com/libuv/libuv/pull/1014
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-10-14 02:06:55 +02:00
Ben Noordhuis
39baaa58b7 test: make threadpool_cancel_single deterministic
Saturate the thread pool before trying to post-and-cancel the work
request.  Before this commit we simply posted requests in a loop,
in the (sometimes idle) hope that one would get queued up instead
of being dispatched right away.

PR-URL: https://github.com/libuv/libuv/pull/1014
Refs: https://github.com/libuv/libuv/pull/1010
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-10-14 02:02:47 +02:00
Ben Noordhuis
e58f7535c8 test: fix tcp_close_while_connecting CI failures
The expected error is UV_ECANCELED but the test tries to connect to what
is basically an arbitrary address in the expectation that no network
path exists, so UV_ENETUNREACH is an equally plausible outcome.

This commit undoes the change from commit e994000 ("test: make
tcp_close_while_connecting more resilient") because I don't think
the connection ever actually succeeds.

PR-URL: https://github.com/libuv/libuv/pull/1048
Refs: https://github.com/libuv/libuv/pull/1005
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Imran Iqbal <imran@imraniqbal.org>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-10-14 01:57:15 +02:00
Brad King
cfc192212e win: fix winapi function pointer typedef syntax
Move the `PASCAL` calling convention marker from:

    typedef void PASCAL (*f)(...);

to the proper place for a calling convention in a function pointer type:

    typedef void (PASCAL *f)(...);

This is where the MS-provided winapi headers place it too.

PR-URL: https://github.com/libuv/libuv/pull/1075
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-10-14 07:30:08 +02:00
Alex Hultman
8ebecf6eab doc: add reference to uv_update_time on uv_timer_start
PR-URL: https://github.com/libuv/libuv/pull/1079
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-10-14 07:26:17 +02:00
Vladimír Čunát
1bcdca290d doc: note buffer lifetime requirements in uv_write
Fixes: https://github.com/libuv/libuv/issues/1072
PR-URL: https://github.com/libuv/libuv/pull/1074
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2016-10-09 13:00:09 -04:00
Jason Ginchereau
8221f9b305 win: fix leaky fs request buffer
When a large number of buffers (>4) is passed into `uv_fs_read()` or
`uv_fs_write()`, a new buffer is dynamically allocated to hold a copy
of the request data. This change adds code in `uv_fs_req_cleanup()`
to free that buffer if it was allocated.

Refs: https://github.com/nodejs/node/issues/7191
Fixes: https://github.com/libuv/libuv/issues/1069
PR-URL: https://github.com/libuv/libuv/pull/1070
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-09-27 09:36:57 +02:00
Julien Gilli
ca107b7f17 build: use -pthreads for tests with autotools
This prevents tests from using non-reentrant implementations of common
APIs (e.g `errno`) when using POSIX threads and building with autotools.
This is consistent with the way tests are builds when using gyp.

The problem was found when investigating tests failures on SmartOS for
one test added by https://github.com/libuv/libuv/pull/640. These
failures were due to that test using POSIX threads and also using a
non-reentrant errno global variable, instead of the reentrant `___errno`
function.

PR-URL: https://github.com/libuv/libuv/pull/1052
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-09-23 10:31:53 +01:00
Vit Gottwald
20c9c0105b doc: add description of uv_handle_type
Fixes: https://github.com/libuv/libuv/issues/1044
PR-URL: https://github.com/libuv/libuv/pull/1059
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-09-22 01:50:09 +02:00
Bartosz Sosnowski
468d44620a win, test: fix fs_event_watch_dir_recursive
Under Windows uv_fs_event_start with UV_FS_EVENT_RECURSIVE will report new file
creation and file deletion twice - once with the name of the file, and second
time with the name of the directory itself. This will filter out callbacks with
directory name, making observed callbacks count match expected values.

Fixes: https://github.com/libuv/libuv/issues/1009
PR-URL: https://github.com/libuv/libuv/pull/1061
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-09-20 00:14:36 +02:00
Vit Gottwald
fa81a1b2d7 test: fix fs_fstat on Android
Fixes: https://github.com/libuv/libuv/issues/1051
PR-URL: https://github.com/libuv/libuv/pull/1056
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-09-19 11:14:28 +01:00
Bartosz Sosnowski
84144036ce win,tty: fix uv_tty_set_mode race conditions
Additional synchronization is needed to ensure that the program
cannot modify the screen state while a line read is getting cancelled.

Also, we need to stop any pending reads *before* calling SetConsoleMode,
or a call to ReadConsole could start while the console is still in raw
mode.

Credit: @orangemocha - Alexis Campailla <orangemocha@nodejs.org>
Fixes: https://github.com/nodejs/node/issues/7837
PR-URL: https://github.com/libuv/libuv/pull/1054
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-09-18 10:15:05 +02:00
Saúl Ibarra Corretgé
79e80e0f12 doc: add ABI tracker link to README
PR-URL: https://github.com/libuv/libuv/pull/1053
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Fedor Indutny <fedor@indutny.com>
2016-09-18 10:10:24 +02:00
Santiago Gimeno
1a96fe3334 build,osx: fix warnings on tests compilation with gyp
Add `-Wno-long-long` to `WARNING_CFLAGS`.

PR-URL: https://github.com/libuv/libuv/pull/1049
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-09-15 18:45:39 +02:00
Bart Robinson
d38edefc73 doc: fix confusing doc of uv_tcp_nodelay
Previous description implied enabling nodelay enabled Nagle, but it is
the other way around.

PR-URL: https://github.com/libuv/libuv/pull/1050
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-09-15 10:38:34 +02:00
Ben Noordhuis
e7bc260c42 unix: don't use alphasort in uv_fs_scandir()
alphasort() uses strcoll() in some libcs (notably glibc and musl) which
makes it locale-sensitive.

Replace it with a simple strcmp-based lexicographic comparison for
consistent behavior across platforms.

Remove the special-casing for OpenBSD.  It has been exporting function
prototypes conforming to POSIX.1-2008 since OpenBSD 5.3 and that was
released more than three years ago.

OS X 10.7 is now the only special case left.

Fixes: https://github.com/libuv/libuv/issues/1045
PR-URL: https://github.com/libuv/libuv/pull/1046
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-09-12 15:50:58 +02:00
Santiago Gimeno
29138058a5 test: fix fs_event_watch_dir flakiness on arm
Increase the time between file creations, so all the events are
emitted.

PR-URL: https://github.com/libuv/libuv/pull/1038
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2016-09-12 08:33:44 +02:00
Santiago Gimeno
6d7d57a983 test: fix test-tcp-writealot flakiness on arm
Decrease the data sent for `arm` so the test doesn't timeout in the arm
CI bots.

PR-URL: https://github.com/libuv/libuv/pull/1038
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2016-09-12 08:33:41 +02:00
Imran Iqbal
30d852f9e0
doc: update supported fields for uv_rusage_t
Fixes: https://github.com/libuv/libuv/issues/342
PR-URL: https://github.com/libuv/libuv/pull/1041
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2016-09-11 17:04:39 -04:00
Santiago Gimeno
0d7f72f219 fs: fix uv_fs_fstat on platforms using musl libc
In `musl` libc, defining `_GNU_SOURCE` doesn't automatically define the
other feature definitions, causing that `uv_fs_fstat` would not fill the
`nsec` fields. For the same reason, compile the tests on linux with
`-D_GNU_SOURCE` so the `fs_fstat` tests passes on `musl` platforms.

PR-URL: https://github.com/libuv/libuv/pull/1039
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-09-10 10:28:14 +02:00
Saúl Ibarra Corretgé
bf0301c33c doc: improve documentation on uv_alloc_cb
Refs: https://github.com/libuv/libuv/issues/1027#issuecomment-244386298
PR-URL: https://github.com/libuv/libuv/pull/1033
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Imran Iqbal <imran@imraniqbal.org>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
2016-09-07 22:09:17 +02:00
Saúl Ibarra Corretgé
f046ebb409 doc: uv_buf_t members are not readonly
This is probably a reminiscent of the usage in libuv 0.x, where alloc_cb
used to return a uv_buf_t.

Refs: https://github.com/libuv/libuv/issues/1027#issuecomment-244386298
PR-URL: https://github.com/libuv/libuv/pull/1033
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Imran Iqbal <imran@imraniqbal.org>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
2016-09-07 22:07:11 +02:00
Saúl Ibarra Corretgé
2112e7a67c test: fix building pty test on Android
Fixes: https://github.com/libuv/libuv/issues/1029
PR-URL: https://github.com/libuv/libuv/pull/1030
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2016-09-05 10:11:13 +02:00
Santiago Gimeno
4a71e7747a test: improve spawn_setuid_setgid test
Check that the child process' uid and gid are correctly set.

PR-URL: https://github.com/libuv/libuv/pull/1024
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2016-09-03 10:16:59 +02:00
Saúl Ibarra Corretgé
6938f6b0bd doc: document uv_fs_realpath caveats
Fixes: https://github.com/libuv/libuv/issues/1017
PR-URL: https://github.com/libuv/libuv/pull/1026
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Imran Iqbal <imran@imraniqbal.org>
2016-09-02 09:57:25 +02:00
Imran Iqbal
a7dfee3b02
win: add disk read/write count to uv_getrusage
Refs: https://github.com/libuv/libuv/issues/342
PR-URL: https://github.com/libuv/libuv/pull/1023
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-08-30 16:21:44 -04:00
Santiago Gimeno
897738b160
test: use RETURN_SKIP in spawn_setuid_setgid test
PR-URL: https://github.com/libuv/libuv/pull/1021
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Reviewed-By: Imran Iqbal <imran@imraniqbal.org>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2016-08-30 01:32:24 -04:00
Saúl Ibarra Corretgé
5d96277834 unix: always define pthread barrier fallback pad
Fixes: https://github.com/libuv/libuv/issues/1019
PR-URL: https://github.com/libuv/libuv/pull/1020
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2016-08-27 11:06:19 +02:00
Saúl Ibarra Corretgé
0895ccfc8c win: fix typo in type name
Introduced in 58ccfd4c21, reviewed by
yours truly :-(

PR-URL: https://github.com/libuv/libuv/pull/1018
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
2016-08-26 18:03:52 +01:00
Santiago Gimeno
ee11177006 doc: add santigimeno to maintainers
PR-URL: https://github.com/libuv/libuv/pull/1016
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Reviewed-By: Imran Iqbal <imran@imraniqbal.org>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2016-08-26 12:45:54 +02:00
Imran Iqbal
58ccfd4c21
win,tty: add support for ANSI codes in win10 v1511
PR-URL: https://github.com/libuv/libuv/pull/889
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-08-25 20:17:16 -04:00
John Barboza
afc93d1ed6 unix: unneccessary use const qualifier in container_of
The type parameter in the "container_of(ptr, type, member)" macro
which uses builtin "offsetof(type, member)" should not require cv
qualifier. Also note that for some platforms, the "offsetof" builtin
does not recognize the cv qualifier in the type.

PR-URL: https://github.com/libuv/libuv/pull/948
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-08-25 22:45:33 +01:00
John Barboza
9e641d251f zos: implement uv__io_check_fd
This method uses the poll syscall to determine whether POLLNVAL is
flagged or not.

PR-URL: https://github.com/libuv/libuv/pull/957
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-08-25 13:04:04 +01:00
Julien Gilli
ad20b96a8f test: refactor fs_event_close_in_callback
This change refactors the `fs_event_close_in_callback` test so that:

1. It creates directory entries instead of modifying them. This allows
the test to work on operating systems that use event ports to handle fs
events (e.g SmartOS and Solaris). When using event ports, watching
only a directory does not allow to receive events for files modified
within that directory, but events will be received for files _created_
within that directory.

2. it generates fs events _after_ the process entered the libuv event
loop. This is also needed to make the test work on operating systems
that use event ports to handle fs events (e.g SmartOS and Solaris),
because events are polled as part of running the event loop. That also
makes the test work on systems based on Kqueue and on AIX.

Fixes: https://github.com/libuv/libuv/pull/808
PR-URL: https://github.com/libuv/libuv/pull/1011
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-08-25 10:12:49 +01:00
Santiago Gimeno
282dc7bc22 test: improve tap output on test failures
Print `errmsg` on TAP output. After making the TAP output the default,
the info in `errmsg` was not being used anymore.

PR-URL: https://github.com/libuv/libuv/pull/1012
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Imran Iqbal <imran@imraniqbal.org>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-08-24 10:47:14 +01:00
John Barboza
f4ef897666 zos: track unbound handles and bind before listen
On zOS the listen call does not bind automatically if the socket
is unbound. Hence the manual binding to an arbitrary port is
required to be done manually.

PR-URL: https://github.com/libuv/libuv/pull/949
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-08-24 10:02:41 +01:00
John Barboza
e37f25d776 unix: expand range of values for usleep
uv_sleep uses only usleep which can only take integers in the
range [0,1000000]. Avoid using boundary parameters such as 1000000
for portability reasons. Use sleep and usleep together to expand
the acceptable range of values for uv_sleep.

PR-URL: https://github.com/libuv/libuv/pull/950
Reviewed-By: Imran Iqbal <imran@imraniqbal.org>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-08-24 09:58:49 +01:00
John Barboza
404025721f zos: implement uv__fs_futime
We do this using __fchattr syscall to change file attributes.

PR-URL: https://github.com/libuv/libuv/pull/956
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-08-24 09:56:24 +01:00
John Barboza
00c0ff149d zos: use pthread helper functions
zOS does not implement some pthread_barrier functions. So we will use
the provided helper functions in src/unix/pthread*.

PR-URL: https://github.com/libuv/libuv/pull/954
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-08-24 09:50:54 +01:00
John Barboza
841edfcd40 zos: use PLO instruction for atomic operations
Use builtins provided that perform compare and swap operations
using the PLO instruction.

PR-URL: https://github.com/libuv/libuv/pull/1008
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2016-08-24 09:47:57 +01:00