Commit Graph

750 Commits

Author SHA1 Message Date
Bert Belder
58ba2d86e1 Move shared c-ares glue code from uv-common to cares.c 2012-05-22 16:11:23 +02:00
Bert Belder
c06edd4c88 windows, unix: share c-ares glue code 2012-05-22 16:11:22 +02:00
Ben Noordhuis
80b554129b unix: reactive new idle watcher implementation
The new idle watcher was temporarily disabled in 073a48d due to some semantic
incompatibilities with the previous implementation. This commit resolves those
issues and reactivates the new implementation.

One outstanding bug is that idle watchers can run in a different order
(relative to other handle types) than the old implementation, e.g. (timer, idle)
instead of the expected (idle, timer). This will be fixed in an upcoming commit.
2012-05-22 15:13:52 +02:00
Ben Noordhuis
6190caba05 unix: remove outdated comment 2012-05-22 15:08:29 +02:00
Bert Belder
ad279df7c0 Unix: remove superfluous variable from uv_poll_start 2012-05-22 01:03:47 +02:00
Ben Noordhuis
6fd9bfb7b0 unix: fix event loop block, prepare/check invoke
Don't block in epoll_wait() / kevent() / etc. syscall unless there are active
handles. If there are only active requests, do a non-blocking poll.

Likewise, don't run the prepare and check watchers unless there are active
handles *or* requests.
2012-05-21 17:41:52 +02:00
Ben Noordhuis
e82d46452e unix: fix close-before-connect bug
Closing the TCP socket before the SYN/ACK handshake completed hung the event
loop, the connect req didn't get unregistered.
2012-05-18 01:19:57 +02:00
Ben Noordhuis
e10a87adb9 unix: streamline shutdown req cleanup logic 2012-05-18 01:19:57 +02:00
Ben Noordhuis
073a48d6bf unix: back out new idle watcher for now
Its semantics don't quite match what node.js expects. This breaks the
stdio_over_pipes and shutdown_close_pipe tests but that can't be helped.
2012-05-18 01:19:56 +02:00
Igor Zinkovsky
60af28abab windows: support junctions with uv_fs_synlink
based on @piscisaureus implementation
2012-05-17 09:53:26 -07:00
Ben Noordhuis
9efa8b3571 unix, windows: rework reference counting scheme
This commit changes how the event loop determines if it needs to stay alive.

Previously, an internal counter was increased whenever a handle got created
and decreased again when the handle was closed.

While conceptually simple, it turned out hard to work with: you often want
to keep the event loop alive only if the handle is actually doing something.
Stopped or inactive handles were a frequent source of hanging event loops.

That's why this commit changes the reference counting scheme to a model where
a handle only references the event loop when it's active. 'Active' means
different things for different handle types, e.g.:

 * timers: ticking
 * sockets: reading, writing or listening
 * processes: always active (for now, subject to change)
 * idle, check, prepare: only active when started

This commit also changes how the uv_ref() and uv_unref() functions work: they
now operate on the level of individual handles, not the whole event loop.

The Windows implementation was done by Bert Belder.
2012-05-17 07:07:53 +02:00
Frank Denis
07622e767d unix: change #if FIONBIO to #ifdef FIONBIO
Fixes compilation on Debian/ppc 6.0.4.
2012-05-16 16:59:42 +02:00
Ben Noordhuis
b5f9bc861f sunos: make fs.watch scale better
Instead of using one port per watch, use one port for all the watches.
This is a cherry-pick of commit 7326962 from v0.6 into master.

Conflicts:

	include/uv-private/uv-unix.h
	src/unix/core.c
	src/unix/sunos.c
2012-05-05 00:51:32 +00:00
Bert Belder
1d24c76df7 Windows: fix MinGW
MinGW's headers are missing a definition for SIO_BASE_HANDLE
2012-05-05 00:05:36 +02:00
Bert Belder
4365896921 Windows: skip GetFileAttributes call when opening a file
It wasn't working, and everything seemed to work fine nonetheless. Removing it just saves a syscall.
2012-05-04 14:31:48 -07:00
Bert Belder
b750dec517 Windows: fix iocp emulation bugs for tcp handles
Makes ipc_tcp_connection pass on Windows XP
2012-05-04 13:54:02 -07:00
Ben Noordhuis
6037684ef8 unix: zero out new loop struct
Fixes spurious segfaults in pyuv.
2012-05-04 15:02:33 +02:00
Ben Noordhuis
ce129ac6e2 windows: remove unused variables 2012-05-03 19:50:49 +02:00
Ben Noordhuis
395e256889 unix: don't use setlocale()
setlocale() is not inherently thread-safe. We'll have to live with the fact
that test/test-dlerror.c fails on systems with localized error messages.
2012-05-03 19:50:40 +02:00
Ben Noordhuis
5d19aa84f0 unix, win: rework uv_dlopen() API 2012-05-03 19:36:40 +02:00
Ben Noordhuis
93d16e6a84 unix: change uv_dl*() error code
Return UV_ENOENT instead of UV_EINVAL. UV_EINVAL was arbitrarily chosen and
turns out to be inconsistent with the Windows implementation.

Fixes #395.
2012-05-03 16:54:59 +02:00
Bert Belder
b9504f7987 Rename uv_platform_socket_t to uv_os_sock_t 2012-05-03 16:05:05 +02:00
Bert Belder
d60d94e0c3 Unix: implement uv_poll 2012-05-03 15:52:56 +02:00
Bert Belder
d7a71761c4 Windows: implement uv_poll 2012-05-03 15:52:52 +02:00
Bert Belder
e38755485e Unix: namespace stream handle flags 2012-05-03 01:47:13 +02:00
Ben Noordhuis
1ebe14e494 linux: fix build error with old kernel headers
O_CLOEXEC was introduced in linux 2.6.23, don't assume it's available.

Fixes #400.
2012-05-02 17:42:59 +02:00
Bert Belder
19aca7a7c0 Windows: add uv_msafd_poll, to support overlapped socket polling 2012-05-02 03:45:00 +02:00
Bert Belder
9f0dc2601e Windows: fetch pointer for CancelIoEx on startup 2012-05-02 03:38:31 +02:00
Bert Belder
7d45cca12a Windows: we're out of handle flags - arrange them more efficiently 2012-05-02 03:38:30 +02:00
Bert Belder
6367da25b3 Merge branch 'v0.6' 2012-05-01 16:54:27 +02:00
Ben Noordhuis
936795a2c8 windows: map ERROR_WRITE_PROTECT to UV_EROFS 2012-05-01 16:53:00 +02:00
Maciej Małecki
edb40b16ce unix: map EROFS to UV_EROFS
Conflicts:

	src/unix/error.c
2012-05-01 16:52:48 +02:00
Fedor Indutny
0efa3cf4d3 err: handle EIO errors on win/unix 2012-05-01 16:43:00 +02:00
Bert Belder
c7edea997e Merge branch 'v0.6' 2012-05-01 16:21:11 +02:00
Bert Belder
32f6f6e2c7 Windows: map ERROR_NOT_SAME_DEVICE to UV_EXDEV 2012-05-01 16:20:52 +02:00
Keno Fischer
d13b1e0803 Windows: fix uv_fs_ftruncate to compile with Mingw32
Close: #382, #397
Ref: #381
2012-04-29 02:32:27 +02:00
Ben Noordhuis
fac3b68fff linux: add IN_MOVE_SELF to inotify event mask
Partially fixes joyent/node#3172, behavior is now consistent with inotifywait.
2012-04-28 02:47:58 +02:00
Bert Belder
99a995a6b8 uv_spawn: support setting the child process' user and group id 2012-04-28 02:38:41 +02:00
Bert Belder
c862acc609 Windows: add mappings for UV_ENOENT 2012-04-28 02:09:29 +02:00
isaacs
b26fdde181 Map ENOMEM to UV_ENOMEM 2012-04-28 02:09:17 +02:00
Bert Belder
d41cc9118d Windows: uv_spawn2 reports the wrong error when setuid/setgid is specified 2012-04-27 21:58:44 +02:00
Bert Belder
aea5db5da1 Windows: add mappings for UV_ENOENT 2012-04-27 21:24:27 +02:00
Bert Belder
c42ba103b7 Temporary API to support spawn with uid and gid options 2012-04-27 17:41:56 +02:00
Luis Lavena
b6e3dcc799 Windows: actually detect mingw-w64 and not 64 bits mode
__MINGW64__ is only defined when using mingw-w64 in 64bits mode, not when
using the 32bits version of the compiler.

Instead, to detect usage of mingw-w64 instead of mingw version of GCC we
should look at __MINGW64_VERSION_MAJOR and __MINGW64_VERSION_MINOR. If one
of these is defined means we are running on mingw-w64 compiler and headers
and not mingw.org build.

Read more here: http://bit.ly/detect-mingw-w64-vs-mingw

Closes #384
2012-04-25 04:06:53 +02:00
Ben Noordhuis
06ae804e03 linux: add IN_MOVE_SELF to inotify event mask
Partially fixes joyent/node#3172, behavior is now consistent with inotifywait.
2012-04-25 01:27:43 +02:00
Bert Belder
42a86693a7 Windows: set loop counters to zero in uv_loop_init 2012-04-25 00:30:07 +02:00
Bert Belder
1b6329dd3e Style fixes 2012-04-25 00:30:07 +02:00
Ben Noordhuis
84d2f82a68 windows: rename local var errno to errorno
Fixes compiler warning: ‘_errno’ redeclared without dllimport attribute:
previous dllimport ignored.
2012-04-23 12:10:38 -07:00
Igor Zinkovsky
e6d4bca2ec remove left-over cast fixes #3160 2012-04-23 10:52:53 -07:00
Ben Noordhuis
1f001fe917 unix: remove kqueue cb == NULL check
The other implementations don't check for it and it's making the counters_init
test fail.
2012-04-23 17:55:57 +02:00