Commit Graph

2602 Commits

Author SHA1 Message Date
Ben Noordhuis
dfd64933d5 linux: simplify uv__async_eventfd()
Assume the presence of the eventfd2() system call on Linux. It was added
in 2.6.27 and our baseline is 2.6.32.

PR-URL: https://github.com/libuv/libuv/pull/2665
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2020-02-04 16:36:59 +01:00
Ben Noordhuis
1b92af1343 unix: fix error handling in uv__make_pipe()
This commit checks that setting the close-on-exec and non-blocking flags
on the file descriptors succeeds, and closes the file descriptors when
it fails.

PR-URL: https://github.com/libuv/libuv/pull/2665
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2020-02-04 16:36:59 +01:00
Ben Noordhuis
233490819c freebsd,linux: simplify uv__make_pipe()
Assume the presence of the pipe2() system call. It was added
in FreeBSD 10 and Linux 2.6.27.

PR-URL: https://github.com/libuv/libuv/pull/2665
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2020-02-04 16:36:59 +01:00
Ben Noordhuis
06616db362 unix: fix error handling in uv__make_socketpair()
This commit checks that setting the close-on-exec flag on the file
descriptors succeeds, and closes the file descriptors when it fails.

PR-URL: https://github.com/libuv/libuv/pull/2665
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2020-02-04 16:36:59 +01:00
Ben Noordhuis
ab6fc15a16 freebsd,linux: simplify uv__make_socketpair()
Assume the presence of the SOCK_CLOEXEC flag. It was added in FreeBSD 10
and before Linux 2.6.32.

PR-URL: https://github.com/libuv/libuv/pull/2665
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2020-02-04 16:36:59 +01:00
Ben Noordhuis
0574343b31 linux: simplify uv__dup2_cloexec()
Assume the presence of the dup3() system call on Linux. It was added
in 2.6.27 and our baseline is 2.6.32.

PR-URL: https://github.com/libuv/libuv/pull/2665
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2020-02-04 16:36:59 +01:00
Ben Noordhuis
13e5b0cf49 linux: assume presence of SOCK_CLOEXEC flag
PR-URL: https://github.com/libuv/libuv/pull/2665
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2020-02-04 16:36:59 +01:00
Ben Noordhuis
067473ed5c linux: simplify uv__accept()
Assume the presence of the accept4() system call on Linux. It was added
in 2.6.28 and our baseline is 2.6.32. That lets us get rid of the system
call wrapper and the fallback logic in uv__accept().

PR-URL: https://github.com/libuv/libuv/pull/2665
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2020-02-04 16:36:59 +01:00
Saúl Ibarra Corretgé
9f1a052094 unix: remove support for FreeBSD < 10
PR-URL: https://github.com/libuv/libuv/pull/2663
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
2020-02-04 13:55:29 +01:00
Witold Kręcicki
a629688008 pipe: disallow listening on an IPC pipe
PR-URL: https://github.com/libuv/libuv/pull/2559
Reviewed-By: Jameson Nash <vtjnash@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <s@saghul.net>
2020-01-31 11:09:16 +01:00
Xu Meng
1b045d464d
ibmi: ensure that pipe backlog is not zero
On IBMi PASE, listen(pipe_fd, backlog=0) leads to "Connection refused" error

PR-URL: https://github.com/libuv/libuv/pull/2641
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2020-01-26 17:55:34 +01:00
ssrlive
2475296c4e
build: make code compilable for iOS on Xcode
Fixes: https://github.com/libuv/libuv/issues/2638
PR-URL: https://github.com/libuv/libuv/pull/2639
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
2020-01-26 17:27:56 +01:00
David Carlier
8270add421 src: android build fix
ip_mreq_source struct are not defined in Android NDK <= 16, regardless
of the API level.

Fixes: https://github.com/libuv/libuv/issues/2633
PR-URL: https://github.com/libuv/libuv/pull/2637
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2020-01-26 17:22:26 +01:00
Anna Henningsen
02e7a78628
unix: handle uv__open_cloexec return value correctly
`uv__open_cloexec()` already returns a libuv error code in case
of failure, and not `-1` like syscalls do.

Fixes: https://github.com/nodejs/help/issues/2099
PR-URL: https://github.com/libuv/libuv/pull/2645
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Jameson Nash <vtjnash@gmail.com>
2020-01-21 20:02:56 +01:00
Jameson Nash
8249bd19cf Revert "aix: replace ECONNRESET with EOF if already closed"
This reverts commit ca08b48252, for the
same reasons that it was reverted the last time it was merged.

Refs: https://github.com/libuv/libuv/pull/475
Refs: https://github.com/libuv/libuv/pull/2447
PR-URL: https://github.com/libuv/libuv/pull/2602
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
2020-01-21 12:36:11 -05:00
Jameson Nash
07ddcb3052 osx,fsevent: clear pointer when deleting it [NFCI]
Set this to NULL just before disposing it to make mistakes more
painfully obvious, hopefully.

PR-URL: https://github.com/libuv/libuv/pull/2626
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2020-01-21 12:29:20 -05:00
Jameson Nash
c8a3f5c93c osx,fsevent: fix race during uv_loop_close
The mutex also needs to protect the access to the state->loop variable,
since that's owned by the child thread and will be destroyed as soon as
it processes our message.

Fixes: https://github.com/libuv/libuv/issues/2625
PR-URL: https://github.com/libuv/libuv/pull/2626
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2020-01-21 12:29:20 -05:00
Xu Meng
c68111759d ibmi: implement uv_interface_addresses()
On IBMi PASE we need to call Qp2getifaddrs() to get the network
interface configurations. And to call QDCRLIND to get the physical
addresses.

PR-URL: https://github.com/libuv/libuv/pull/2614
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
2020-01-21 09:32:11 +01:00
Ben Noordhuis
6e3e422c2d darwin: stop calling SetApplicationIsDaemon()
It's been reported that calling this function causes the Core Graphics
framework to start reporting bogus values.

Commit 565cdd16 ('Revert "darwin: speed up uv_set_process_title()"')
attempted to fix this but apparently merely postponed the moment
when `CGDisplayPixelsWide()` and friends start reporting bogus values.

The Chromium code base mentions that calling `SetApplicationIsDaemon()`
prevents the HIServices framework from terminating the process when it
can't connect to launchservicesd.

Libuv itself doesn't use HIServices but it's possible that the libuv
user does. If said user doesn't call `SetApplicationIsDaemon()`, it's
possible this commit introduces an observable change in behavior.

The `SetApplicationIsDaemon()` call was introduced in commit 08e0e63f
("darwin: avoid calling GetCurrentProcess") from October 2013 to work
around a bug in macos 10.9 where the Activity Monitor showed the program
as "Not responding."

Fixes: https://github.com/libuv/libuv/issues/2566 (for real, hopefully)
Fixes: https://github.com/nodejs/node/issues/31328
PR-URL: https://github.com/libuv/libuv/pull/2593
Refs: https://cs.chromium.org/chromium/src/sandbox/mac/system_services.cc?l=26&rcl=a06d2fe5a279ddecd358d919d461080e2c53c92e
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2020-01-21 09:25:49 +01:00
Jameson Nash
1399d851b1
tty,unix: avoid affecting controlling TTY
Since this re-open logic is supposed to be transparent to the parent
program, this flag helps ensure that there are no unintended
side-effects. This flag is already the default (and only possible
option) on FreeBSD. Normally, Linux will also act as if you passed
NOCTTY. However, it appears that mac OS sometimes strips the parent
process of its controlling terminal if you don't pass this flag.

Fixes: https://github.com/libuv/libuv/issues/973
Fixes: https://github.com/JuliaLang/julia/issues/16398
PR-URL: https://github.com/libuv/libuv/pull/2619
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2020-01-12 17:40:13 -05:00
Jameson Nash
623aa05ac7 win: remove bad assert in uv_loop_close
This assert was stronger than necessary (we assert the actual condition
later in this function). And it's vulnerable to a race condition
occurring in uv__work_done where we drain the work queue but still have
a stale message on this object.

Fixes: https://github.com/libuv/libuv/issues/2610
PR-URL: https://github.com/libuv/libuv/pull/2615
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2020-01-10 11:03:34 -05:00
Jameson Nash
3016fbc40b win,tty: avoid regressions in utf-8 handling
This code already had special handling for decoding utf-8
characters correctly for the UCS-2 conhost
(trailing incomplete bytes and characters > 0xFFFF).
Rather than trying to duplicate that, we can simply
delete the duplicate code-path and selectively disable
the parts that do not apply.

PR-URL: https://github.com/libuv/libuv/pull/1965
Ref: https://github.com/JuliaLang/julia/issues/27267
Co-authored-by: Mustafa M. <mus-m@outlook.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2020-01-09 10:59:36 -05:00
virtualyw
e1fad5a37f win: remove abort when non-IFS LSP detection fails
Fixes: https://github.com/libuv/libuv/issues/1425
PR-URL: https://github.com/libuv/libuv/pull/2600
Refs: https://github.com/libuv/libuv/pull/2124
Co-authored-by: Jameson Nash <vtjnash@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2020-01-08 12:00:28 -05:00
Ben Noordhuis
a1af6685b7
unix: squelch fchmod() EPERM on CIFS share
uv_fs_copyfile() calls fchmod() to change the target file's permissions
to the source file's permissions but that operation errors with EPERM on
CIFS shares unless they are mounted with the "noperm" option.

Since UNIX-style permissions don't make sense for CIFS anyway, let's
handle the error in libuv by recognizing that it's a CIFS share and
continuing when that is the case.

The same logic probably applies to (a subset of) FUSE file systems but
those haven't been whitelisted yet.

Fixes: https://github.com/libuv/libuv/issues/2596
Refs: https://github.com/nodejs/node/issues/31170
PR-URL: https://github.com/libuv/libuv/pull/2597
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2020-01-07 23:49:45 -05:00
Xu Meng
51a0ae7817
ibmi: fix the CMSG length issue
On IBMi, msg_controllen of struct msghdr can not exceed 256.
The default UV__CMSG_FD_COUNT value 64 leads EINVAL error.
Set UV__CMSG_FD_COUNT to 60 on IBMi to resolve the issue.

PR-URL: https://github.com/libuv/libuv/pull/2591
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
2020-01-07 23:39:28 -05:00
Ben Noordhuis
5cb8860b45 unix: suppress -Waddress-of-packed-member warning
Fixes: https://github.com/libuv/libuv/issues/2418
PR-URL: https://github.com/libuv/libuv/pull/2584
Refs: https://github.com/libuv/libuv/pull/2580
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2019-12-30 18:25:11 +01:00
David Carlier
2ab3dc1567 unix: pass sysctl size arg using ARRAY_SIZE macro
PR-URL: https://github.com/libuv/libuv/pull/2510
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2019-12-16 15:55:59 +01:00
George Zhao
93ca478adb unix: fix -Wunused-but-set-variable warning
PR-URL: https://github.com/libuv/libuv/pull/2517
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2019-12-16 15:40:04 +01:00
Xu Meng
e14c56bd90 ibmi: fix the false isatty() issue on IBMi
On IBMi PASE isatty() always returns true for stdin, stdout and stderr.
Use ioctl() instead to identify whether it's actually a TTY.

PR-URL: https://github.com/libuv/libuv/pull/2565
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
2019-12-16 15:26:57 +01:00
Ben Noordhuis
d077d066fd darwin: assume pthread_setname_np() is available
Stop dlsym-ing the symbol name at run-time, that was only necessary to
support macOS and iOS versions that were already near-obsolete when this
feature was introduced in August 2013.

This reapplies commit bee1bf5dd7 from October.

PR-URL: https://github.com/libuv/libuv/pull/2568
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2019-12-16 15:22:25 +01:00
Ben Noordhuis
565cdd16bb Revert "darwin: speed up uv_set_process_title()"
This reverts commit 038eacfbf4.

It was reported that this change causes a regression when trying
to obtain the screen resolution with `CGDisplayPixelsWide()` or
`CGDisplayPixelsHigh()` after changing the process title.

This is the second time this change had to be reverted due to
regressions and, although third time is allegedly the charm,
leaving well enough alone is the proverb I plan to adhere to...

Fixes: https://github.com/libuv/libuv/issues/2566
PR-URL: https://github.com/libuv/libuv/pull/2568
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2019-12-16 15:22:25 +01:00
Ben Noordhuis
56f8366873 Revert "darwin: assume pthread_setname_np() is available"
This reverts commit bee1bf5dd7.

This is necessary in order to be able to revert commit 038eacfbf4
("darwin: speed up uv_set_process_title()") from October.

PR-URL: https://github.com/libuv/libuv/pull/2568
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2019-12-16 15:21:34 +01:00
Ben Noordhuis
a0530ce77e unix: cache address of dlsym("mkostemp")
Look up the "mkostemp" symbol once instead of on every call
to uv_fs_mkstemp().

PR-URL: https://github.com/libuv/libuv/pull/2564
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2019-12-08 12:27:31 +01:00
Ben Noordhuis
0d3b487f5d unix: fix -Wstrict-aliasing compiler warning
Fixes: https://github.com/libuv/libuv/issues/2563
PR-URL: https://github.com/libuv/libuv/pull/2564
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2019-12-08 12:27:31 +01:00
Ben Noordhuis
635e0ce607
zos: fix nanosleep() emulation
* Remove an assert() that wasn't actually being tested because the CI
  builds libuv with `-DNDEBUG` on that platform.

* Fix the emulation to update `errno` correctly.

* Fix the emulation to update the `rem` out parameter correctly.

PR-URL: https://github.com/libuv/libuv/pull/2552
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2019-12-03 19:17:42 -05:00
Ben Noordhuis
7a914e7f3d
unix: retry on EINTR in uv_sleep()
Reception of a signal makes nanosleep() return prematurely. Restart the
system call when that happens.

PR-URL: https://github.com/libuv/libuv/pull/2552
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2019-12-03 19:17:37 -05:00
Ben Noordhuis
664f9c0011
unix: switch uv_sleep() to nanosleep()
Before this commit, uv_sleep() made two library calls: sleep() to sleep
for the requested number of seconds, and then an usleep() call to sleep
for the remaining milliseconds. Make a single nanosleep() call instead.

Receiving a signal will wake up prematurely from sleep() but then
re-enter sleep mode again in usleep(), which seems undesirable.

PR-URL: https://github.com/libuv/libuv/pull/2552
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2019-12-03 19:16:19 -05:00
Saúl Ibarra Corretgé
5500253cac fs: add uv_fs_mkstemp
Thanks to Andreas Hauptmann and Bastian Schmitz for their earlier work.

Supersedes: https://github.com/libuv/libuv/pull/2074
Closes: https://github.com/libuv/libuv/issues/2555
PR-URL: https://github.com/libuv/libuv/pull/2557
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2019-12-03 09:03:50 +01:00
Richard Lau
0a4e0b9d30
aix: fix setting of physical addresses
Changes based on code in `src/unix/bsd-ifaddrs.c`.

PR-URL: https://github.com/libuv/libuv/pull/2546
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2019-12-02 12:54:59 -05:00
Richard Lau
cf6a678fa4
aix: clean up after errors in uv_interface_addresses()
PR-URL: https://github.com/libuv/libuv/pull/2545
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2019-11-28 09:38:31 -05:00
Richard Lau
e3d378747c
aix: fix netmask for IPv6
Use SIOCGIFNETMASK6 for IPv6 network interfaces.

The SIOCGIFNETMASK and SIOCGIFNETMASK6 ioctl() calls on AIX appear to
return the address family as `0` so explicitly set the address family.

Fixes: https://github.com/nodejs/node/issues/30504
PR-URL: https://github.com/libuv/libuv/pull/2545
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
2019-11-28 09:37:48 -05:00
cjihrig
8c73eee23f
unix,win: add uv_sleep()
This commit exposes the uv_sleep() function that previously
only existed in the test runner.

PR-URL: https://github.com/libuv/libuv/pull/2548
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
2019-11-25 12:13:39 -05:00
Milad Farazmand
96cfa783a2 fs: handle non-functional statx system call
statx is not implemented on RHEL 7 and trying to call it from within a
docker container might result in a return value of 1 (which is not an
expected value according to statx man page, expected values are 0 or -1)
and errno is set to 0, in which case assume statx is not implemented.

Above behaviour has been seen on RHEL 7 running on a s390.

PR-URL: https://github.com/libuv/libuv/pull/2529
Refs: https://bugzilla.redhat.com/show_bug.cgi?id=1759152
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2019-11-22 04:16:31 +01:00
cjihrig
780c08a63e
unix: refactor uv__fs_copyfile() logic
The Unix/macOS uv__fs_copyfile() implementation falls back to
using uv_fs_sendfile(). This commit refactors the error handling
to use the sendfile() req's result field, which is an ssize_t
instead of using the return value, which is an int. The int
value was coming back as a negative number for some large files.

Refs: https://github.com/nodejs/node/issues/30085
PR-URL: https://github.com/libuv/libuv/pull/2533
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
2019-10-30 10:07:37 -04:00
nia
a62f8ced7a netbsd: use KERN_ARND sysctl to get entropy
PR-URL: https://github.com/libuv/libuv/pull/2528
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <s@saghul.net>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
2019-10-29 13:36:05 +01:00
nia
2dcf2e8188 unix: move random-sysctl to random-sysctl-linux
PR-URL: https://github.com/libuv/libuv/pull/2528
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <s@saghul.net>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
2019-10-29 13:31:41 +01:00
Ben Noordhuis
83f59ff1c1
linux: fix arm64 SYS__sysctl build breakage
The arm64 architecture never had a _sysctl system call and therefore
doesn't have a SYS__sysctl define either. Always return UV_ENOSYS.

Fixes: https://github.com/libuv/libuv/issues/2522
PR-URL: https://github.com/libuv/libuv/pull/2524
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
2019-10-19 16:25:30 -05:00
Shelley Vohr
68818b621a
win: cast setsockopt struct to const char*
Fixes: https://github.com/libuv/libuv/issues/2519
PR-URL: https://github.com/libuv/libuv/pull/2520
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2019-10-16 12:57:37 -04:00
Stefan Bender
ddcaff9a10
unix: update uv_fs_copyfile() fallback logic
This commit fixes uv_fs_copyfile() in cases where an unknown error
occurs when copy-on-write is requested by setting
UV_FS_COPYFILE_FICLONE. The original approach tried to catch some of
the errors raised by the ioctl() call, assuming that sendfile() would
also fail in those cases. This is not necessarily true, as some
variants of ioctl() also raise EINVAL (some maybe EBADF), but sendfile()
works just fine.

This patch reverses the logic, falling back to sendfile() in any
case where ioctl() returns an error. In other words, it tries much
harder to make uv_fs_copyfile() work.

Related to that, the original approach returned UV_ENOTSUP
unconditionally in cases where ioctl() failed and
UV_FS_COPYFILE_FICLONE_FORCE was set. However, ioctl() may have
failed for other reasons than being not supported. The function
now returns the actual error raised by ioctl(), leaving it to the
caller to deal with it.

Fixes: https://github.com/libuv/libuv/issues/2483
PR-URL: https://github.com/libuv/libuv/pull/2514
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2019-10-16 10:49:42 -04:00
Ryan Liptak
076df64dbb
win: fix uv_statfs_t leak in uv_fs_statfs()
PR-URL: https://github.com/libuv/libuv/pull/2505
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2019-10-09 12:57:35 -04:00