Commit Graph

1704 Commits

Author SHA1 Message Date
Ben Noordhuis
0865a6f228 windows: use WSAGetLastError(), not errno
setsockopt() doesn't touch errno on failure. Use WSAGetLastError()
instead.

This is a back-port of commit 30a8b44 from the master branch.
2013-06-26 01:09:04 +02:00
Bert Belder
399c3ef55c windows: uv_spawn shouldn't reject reparse points
This fixes an issue where uv_spawn would not try to run a reparse point,
and continue to scan the PATH instead. Effectively, it was impossible to
spawn a symlinked binary. This commit fixes that.

Also see #748

This is a backport of 495d1a0 to the v0.8 branch.
2013-06-19 00:17:25 +02:00
isaacs
1258d9e3ef win: map ERROR_INVALID_FUNCTION to EISDIR
This error is raised when calling read() or write() on a directory.

A bit of googling turns up some cases where this error can be raised
that are not properly mapped to EISDIR, but are also cases that libuv
doesn't really care about, like the Password Manager API,
GetFirmwareEnvironmentVariable, or CreateTapePartition.

If libuv ever needs to handle these cases, then I suppose that the
ERROR_INVALID_FUNCTION->EISDIR mapping could be done directly in the
fs read() and write() functions, but doing so at this point seems
premature, as it makes the error code mapping a bit more messy.

Fixes joyent/node#4951
2013-03-08 12:57:20 +01:00
Bert Belder
36d19dde8c win/tty: fix typo in color attributes enumeration 2013-03-08 12:57:01 +01:00
Bert Belder
83626b6bc2 win/tty: don't touch insert mode or quick edit mode
This is a back-port of 4abad23, whichi is supposed to fix
joyent/node#4809.

The private `original_console_mode` field in the uv_tty_t struct has
been renamed, but couldn't be removed because changing the ABI isn't
allowed on stable branches.
2013-03-08 12:56:32 +01:00
Bert Belder
b77139964b win/tty: fix case where uv_read_start incorrectly reports failure
In very rare circumstances a uv_read_start() call on a uv_tty_t handle
in raw mode would return -1 but there was no actual failure. This patch
fixes that.
2013-03-08 12:45:11 +01:00
Bert Belder
aebc0f2242 windows: link with advapi32 and shell32 libraries
Older versions of GYP would set up the Visual Studio project to link
with these libraries by default, but this was changed in r1584 (see
https://codereview.chromium.org/12256017).

Closes #728
2013-03-08 12:45:02 +01:00
Timothy J Fontaine
95577a8699 test: fix tap output even when ok but have output
This is a back-port of commit 49d2ae3 from the master branch.
2013-03-05 15:40:02 +01:00
Ben Noordhuis
99065bb235 test: fix tap output check
Only report as an error when status != 0.

Stops the platform_output test from being reported as having failed
on Jenkins.

This is a back-port of commit 1821bba from the master branch.
2013-03-05 15:39:40 +01:00
Ben Noordhuis
b0c5e62035 linux: make uv_cpu_info() handle absent procfs
Return an error when reading from /proc files fails because the procfs
isn't mounted.

This is a back-port of commit 7e59f9b from the master branch.
2013-03-05 15:29:17 +01:00
Timothy J Fontaine
23b93474b1 test: don't rewind_cursor when using tap_output
This is a back-port of commit 72bbf5d from the master branch.
2013-02-26 02:04:25 +01:00
Timothy J Fontaine
5d57f42ed3 test: add tap output
Given UV_TAP_OUTPUT being set, test result output should use TAP formatting

This is a back-port of commit bfe269b from the master branch.

Conflicts:
	test/runner-unix.c
2013-02-26 02:03:26 +01:00
Ben Noordhuis
86ae8b3c63 unix: handle EINPROGRESS for unix sockets
Before this commit, it was assumed that connect() on UNIX sockets never
returns EINPROGRESS. It turned out to be a bad assumption: Dave Pacheco
reports sporadic hangups on SmartOS because of that.

It's not clear to me _why_ the Illumos kernel returns that error but
that's inconsequential: whatever the cause, libuv needs to handle it
and now it does.

This is a back-port of commit 3348cd7 from the master branch.

Fixes joyent/node#4785.

Conflicts:
	src/unix/pipe.c
2013-02-21 23:27:15 +01:00
Ben Noordhuis
1ba01fddda build: handle bad gcc -dumpversion output
`gcc -dumpversion` usually prints major.minor - but on sunos it prints
major.minor.patch.
2013-02-21 23:27:15 +01:00
Bert Belder
034ea318af win: get rid of early ipv6 support detection
No longer explictly check wheter an IPv6 stack is present when the user
tries to use IPV6 sockets. Instead realy on the operating system
to report the lack of protocol support via appropriate error messages.
2013-01-30 19:09:58 +01:00
Bert Belder
36883f29ea win/udp: fix bug in getsockopt() return value check 2013-01-30 19:09:57 +01:00
Bert Belder
6b1cca3975 win/udp: make uv_udp_set_socket set UV_HANDLE_IPV6
This patch makes uv_udp_set_socket responsible for setting the
UV_HANDLE_IPV6 flag.

In addition, this patch fixes some minor style issues.
2013-01-30 19:09:57 +01:00
Bert Belder
c45564ac8a win/tcp: make uv_tcp_set_socket set UV_HANDLE_IPV6
This makes uv_tcp_set_socket responsible for setting the UV_HANDLE_IPV6
flag. This fixes a couple of situations where the the fact that a socket
is an IPv6 socket is not taken into account when deciding whether a call
to SetFileCompletionNotificationModes is appropriate.
2013-01-30 19:09:56 +01:00
Bert Belder
3382a923f5 win: fix uv_winsock_init crash when no IPv4 stack present
uv_winsock_init() tries to create an IPv4 socket in order to detect
if the system has any layered service providers (LSPs) installed.
When creating this socket failed it would call uv_fatal_error and exit
with the following message:

  socket: (10047) An address incompatible with the requested protocol was used.

This patch fixes that. It also includes some minor style tweaks.
2013-01-30 19:09:56 +01:00
Bert Belder
f0844ee760 win: add error mappings related to unsupported protocols 2013-01-30 19:09:55 +01:00
Bert Belder
d27d1e5078 win: sort error code mappings 2013-01-30 19:09:36 +01:00
Bert Belder
4c5c5d9aea windows: map ERROR_DIRECTORY to UV_ENOENT 2013-01-30 19:06:10 +01:00
Andrew Shaffer
49977386e9 sunos: properly disarm PORT_LOADED fsevent watcher
Fixes a segmentation fault when the watched entity is changed after the watcher
has been closed.
2012-12-14 12:02:57 +01:00
Bert Belder
527a10f904 windows: improve / fix uv_interface_addresses
* If GetAdaptersAddresses() failed, it would return UV_OK nonetheless,
  but the `adresses` and `count` out parameters would not be set.

* When adapters were enabled or added in between the two
  GetAdaptersAddresses() calls, it would fail.

* In case of an out of memory situation, libuv would crash with a fatal
  error.

* All interface information is now stored in a single heap-allocated
  area.
2012-12-04 14:05:50 +01:00
Bert Belder
c7fca7ad84 windows: add some error code mappings 2012-12-04 14:05:50 +01:00
Ben Noordhuis
deb1c34774 sunos: fix uv_getaddrinfo() NULL pointer dereference 2012-11-29 23:30:48 +01:00
Ben Noordhuis
5639b2f1f9 linux: use /proc/cpuinfo for CPU frequency
Obtain the CPU frequency from /proc/cpuinfo because there may not be any
cpufreq info available in /sys. This also means that the reported CPU speed
from now on is the *maximum* speed, not the *actual* speed the CPU runs at.

This change only applies to x86 because ARM and MIPS don't report that
information in /proc/cpuinfo.

Fixes #588.

This is a back-port of commit 775064a from the master branch.
2012-11-20 19:20:16 +01:00
Ben Noordhuis
72955c29c2 windows: map WSAESHUTDOWN to UV_EPIPE
This is a back-port of commit 483043b from the master branch.
2012-11-14 01:06:03 +01:00
Ben Noordhuis
deeec421af build: use link_settings, fix typo
* Use link_settings instead of direct_dependent_settings.
* Fix typo: s/ldlags/ldflags/

Pointed out by a certain R.L. Dahl of San Francisco, CA.

Fixes #618.
2012-11-09 20:22:42 +01:00
Bert Belder
f372fd4b13 windows: map ERROR_GEN_FAILURE to UV_EIO 2012-11-07 11:10:43 +01:00
Ben Noordhuis
2affa60e19 test: remove unnecessary #ifdef _WIN32
This is a back-port of commit 4d17337 from the master branch.
2012-11-06 00:35:39 +01:00
Bert Belder
4c9e42d0e6 windows: un-break the build
It was broken in fb64948.
2012-11-05 22:13:38 +01:00
Charlie McConnell
fb64948746 unix: do not set environ unless one is provided
Currently, `uv_spawn` will set `environ` to the value of `options.env`, even if
`options.env` is `NULL`.  This results in child processes for whom `environ ==
NULL`, which can cause a variety of unexpected issues.

This is a back-port of commit 1d85815 from the master branch.
2012-11-03 01:41:10 +01:00
Ben Noordhuis
f43ad85edd include: fix ngx_queue_foreach() macro
Guard against the possibility that the queue is emptied while we're iterating
over it. Simple test case:

  #include "ngx-queue.h"
  #include <assert.h>

  int main(void) {
    ngx_queue_t h;
    ngx_queue_t v[2];
    ngx_queue_t* q;
    unsigned n = 0;
    ngx_queue_init(&h);
    ngx_queue_insert_tail(&h, v + 0);
    ngx_queue_insert_tail(&h, v + 1);
    ngx_queue_foreach(q, &h) {
      ngx_queue_remove(v + 0);
      ngx_queue_remove(v + 1);
      n++;
    }
    assert(n == 1); // *not* 2
    return 0;
  }

Fixes #605.
2012-10-25 04:36:51 +02:00
Ben Noordhuis
c2478b2669 linux: update comm field in uv_set_process_title()
Makes the new process name visible in both `ps` and `ps a`, with the caveat
that `ps` will only print the first 16 characters.

Before this commit, `ps` kept reporting the old process name.
2012-10-22 13:44:56 +02:00
saghul
9a6f496985 win: fix compilation with MSVCRT < 8.0 2012-10-11 00:59:43 +02:00
Bert Belder
b0c1a3803a windows: fix handle leak in uv_fs_utime 2012-10-10 17:15:25 +02:00
Bert Belder
4900912d44 windows: fix application crashed popup in debug version
This is a backport of 2 patches by Ting-Yu Lin and Hiroaki Nakamura.
2012-10-10 17:15:25 +02:00
Bert Belder
39ca621987 windows: don't blow up when an invalid FD is used 2012-09-22 03:50:30 +02:00
Charlie McConnell
b877db93ce unix: map EDQUOT to UV_ENOSPC 2012-09-21 17:08:27 +02:00
Ben Noordhuis
9a4838110d linux: improve /proc/cpuinfo parser
Make uv_cpu_info() understand the ARM and MIPS versions of /proc/cpuinfo,
it only knew how to deal with the x86 version

This commit also fixes a buglet where uv_cpu_info() reported the maximum CPU
frequency instead of the actual CPU frequency. That is, before this commit
`out/Debug/run-tests platform_output | grep speed | sort | uniq -c` on my
system always reported:

      8   speed: 3400

Now it reports (for example):

      2   speed: 3400
      6   speed: 1600

In other words, two CPUs are running at full speed while the others have been
scaled back because they're mostly idle.

This is a back-port of commit 54bfb66 from the master branch.

Fixes #526.
2012-09-15 19:10:41 +02:00
Bert Belder
b2dc1e6d64 win/tty: reset background brightness when color is set to default 2012-09-14 17:50:45 +02:00
Ben Noordhuis
1988f5e581 unix: put child process stdio fds in blocking mode
Remove the O_NONBLOCK flag from file descriptors 0-2, most applications don't
expect EAGAIN errors when dealing with stdio.
2012-09-12 01:48:05 +02:00
Ben Noordhuis
b5028c5b54 unix: code cleanup, rename variable 2012-09-12 01:33:16 +02:00
Ben Noordhuis
12c25e1027 unix: fix EMFILE busy loop
Don't spin in epoll_wait() / kevent() / port_getn() / etc. when we can't
accept() a new connection due to having reached the file descriptor limit.
Pass the error to the connection_cb and let the libuv user deal with it.
2012-09-10 15:03:03 +02:00
Ben Noordhuis
33bcb63596 build: make gyp_uv understand '-f ninja' 2012-09-10 15:03:03 +02:00
Ben Noordhuis
b101a53e6e sunos: don't set TCP_KEEPALIVE
The system headers advertise the socket option but the actual syscall fails
with ENOPROTOOPT.

Fixes joyent/node#3937.
2012-09-04 01:20:33 +02:00
Bert Belder
24c062cc3e windows: fix memory corruption when closing shared server sockets 2012-08-30 17:25:32 +02:00
Ben Noordhuis
ad7b48aeec unix: fix memory leak in udp.c
Some memory was leaked when the uv_udp_t handle was closed when there were
in-flight send requests with a heap allocated buffer list.

That doesn't happen much in practice. In the common case (writing < 5 buffers),
the buffer list is stored inside the uv_udp_send_t structure, not allocated on
the heap.
2012-08-25 22:28:52 +02:00
Ben Noordhuis
0ac2fdc554 unix: map errno ESPIPE 2012-08-23 00:32:56 +02:00