Ben Noordhuis
e8497aee5a
Add error code UV_EPIPE.
2011-08-11 02:45:27 +02:00
Ben Noordhuis
b328e4cb05
uv-unix: fd 0 is valid file descriptor
...
uv__bind() and uv_tcp_listen() created a new socket
if tcp->fd <= 0 but 0 is a valid file descriptor.
The second bug was that the newly created socket
wasn't actually assigned to tcp->fd.
Fixes failing node.js test:
test/simple/test-regress-GH-746.js
2011-08-11 01:36:20 +02:00
Ryan Dahl
ee2027dd13
fix preprocessor again
2011-08-10 16:16:47 -07:00
Ben Noordhuis
b6b97f305e
uv-unix: guard against self-close by connection_cb
...
connection_cb may close the server socket inside the accept loop, handle it.
Fixes failing node.js tests:
test/simple/test-net-connect-buffer.js
test/simple/test-net-create-connection.js
2011-08-11 00:33:09 +02:00
Ben Noordhuis
afb1859600
uv-unix: remove dead code
2011-08-11 00:33:09 +02:00
Ryan Dahl
06623d15f2
More preprocessor fixes...
2011-08-10 15:01:38 -07:00
Ryan Dahl
dac30a15f2
More preprocessor fixes
2011-08-10 14:56:16 -07:00
Ryan Dahl
5dc8037fcf
Fix mingw build by using preprocessor correctly.
2011-08-10 14:40:52 -07:00
Ryan Dahl
db190c7b4f
unix: uv_pipe_connect should call uv__stream_open
2011-08-10 14:22:10 -07:00
Ryan Dahl
b8fe56d837
Remove unnecessary casts
2011-08-10 14:22:10 -07:00
Robert Mustacchi
4b1b8faea8
Clean up SunOS build
2011-08-09 23:51:50 +02:00
Peter Bright
3409c9b383
Include important Windows environmental variables even when a blank/custom environment is specified.
2011-08-09 14:29:51 -07:00
Ben Noordhuis
4abd1e0ccc
uv-unix: close file descriptors immediately in uv_close()
...
Don't defer closing of socket and pipe file descriptors to the
next iteration of the event loop. It breaks node.js unit tests
that assume the call to `server.close()` immediately frees up
the bound to address.
2011-08-09 23:14:38 +02:00
Ben Noordhuis
0c815cfe89
eio: define HAVE_UTIMES 1 on cygwin, fixes build
2011-08-09 22:58:21 +02:00
Ryan Dahl
0266c0ec57
Change for MinGW on Win 2k3
2011-08-09 12:24:01 -07:00
Bert Belder
831b15a47c
Windows: fix WaitNamedPipe thread bug
2011-08-09 17:35:18 +02:00
Peter Bright
648baa3826
Fix missing prototype warnings.
2011-08-08 18:11:01 -07:00
Ryan Dahl
1493dcf359
Peter Bright's MSVS fixes
2011-08-06 22:36:59 -07:00
Andrea Lattuada
6c3205557b
Remove uv_flag_* functions in favor of manual bit twiddling
...
Fixes #121
Fixes #129
2011-08-06 12:12:25 -07:00
Ben Noordhuis
62d1c5751e
uv-unix: fix warning: passing argument 1 of ‘eio_custom’ from incompatible pointer type
2011-08-06 17:01:09 +02:00
Ben Noordhuis
8abce89e57
build: fix libeio build on linux
...
Define HAVE_UTIMES so libeio includes <utime.h>
2011-08-06 14:43:50 +02:00
Ryan Dahl
52e1a9e997
Upgrade eio (it has better msvs support)
2011-08-06 00:29:39 -07:00
Igor Zinkovsky
cc143317b1
windows: fix req refcount for uv_pipe_connect
2011-08-05 17:47:20 -07:00
Ryan Dahl
4ca89308b6
Remove assert that is broken on darwin
2011-08-05 17:47:18 -07:00
Tom Hughes
76338f794e
ares_parse_a_reply: fix memleak
2011-08-06 00:18:59 +02:00
Ryan Dahl
787ef5da80
uv-unix: Fix missing symbols on FreeBSD7 systems.
...
thanks Lenny
2011-08-05 11:58:11 -07:00
Ben Noordhuis
2fbcbe90c8
uv-unix: fix build on systems that don't have pipe2()
2011-08-05 17:12:02 +02:00
Bert Belder
c834d5de9e
Windows: correct comment in process.c
2011-08-05 08:22:01 +02:00
Ben Noordhuis
041d60e141
uv-unix: avoid exec-after-fork race in uv_spawn()
...
The race condition in a nutshell:
if ((pid = fork()) > 0) {
kill(pid, SIGTERM);
}
else if (pid == 0) {
execve("/bin/cat", argp, envp);
}
The parent sends a signal immediately after forking.
Since the child may not have called `execve()` yet,
there is no telling what process receives the signal,
our fork or /bin/cat.
To avoid ambiguity, we create a pipe with both ends
marked close-on-exec. Then, after the call to `fork()`,
the parent polls the read end until it sees POLLHUP.
2011-08-05 04:09:20 +02:00
Peter Bright
d84b249616
Support for unescaped arguments, suitable for use with cmd /c.
...
Robust argument escaping that hopefully matches Windows' algorithm for unescaping.
2011-08-04 18:22:47 -07:00
Ben Noordhuis
c01d6f928c
ev: fix infinite loop in ev_walk()
2011-08-04 19:03:47 +02:00
Bert Belder
642d97ced8
Windows: make process arguments buffer computation better
2011-08-03 02:09:37 +02:00
Bert Belder
ec143961d1
Windows: fix bug in process arguments buffer size computation
2011-08-03 01:42:32 +02:00
Bert Belder
dbaddc4423
Windows: avoid errorneous freeing of pipe handle
2011-08-03 00:18:12 +02:00
Ryan Dahl
b2ed24d86e
unix: Remove flock code
...
solaris doesn't have flock
2011-08-02 07:08:13 +00:00
Ryan Dahl
22ec2db413
solaris fixes
2011-08-02 06:29:25 +00:00
Bert Belder
2e9a743da0
Windows: report uv_spawn() failure asynchronously
2011-08-01 20:24:54 -07:00
Igor Zinkovsky
6d940a3afc
windows: remove dependency on rpcrt4 and ole32 libs. fixes https://github.com/joyent/libuv/issues/118
2011-08-01 20:10:55 -07:00
Igor Zinkovsky
0d29ea68c9
windows: fix for space in args
2011-08-01 16:41:08 -07:00
Ben Noordhuis
404d697dc4
uv-unix: undo accidental revert of b700896 in 5ec2575
2011-08-02 01:12:57 +02:00
Igor Zinkovsky
5af7423f90
always use PATH from parent
2011-08-01 14:28:39 -07:00
Ryan Dahl
5ec2575c0e
unix: Add UV_READABLE, UV_WRITABLE flags; clean up uv_shutdown
2011-08-01 13:55:55 -07:00
Igor Zinkovsky
6c86f9e0a8
windows: get values of path and pathext env variables when they're not supplied
2011-08-01 13:40:48 -07:00
Ben Noordhuis
b7008965bc
uv-unix: unlock pipe after use, carry over lock file from uv_pipe_bind()
2011-08-01 22:23:06 +02:00
Ben Noordhuis
d24403ac8e
uv-unix: safely close pipe file descriptors
2011-08-01 18:06:20 +02:00
Ben Noordhuis
a3852a7d73
uv-unix: set stream->accepted_fd=-1 in uv_pipe_init()
...
stream->accepted_fd was zeroed in uv_pipe_init() and that made
uv__finish_close() close the stdin file descriptor. Not good.
2011-08-01 18:05:55 +02:00
Igor Zinkovsky
1d6117a89b
windows: set mode for child pipe handle
2011-07-30 10:55:30 -07:00
Igor Zinkovsky
d272a2183d
Windows: spawn child processes
2011-07-29 19:02:51 -07:00
Ryan Dahl
7108ca8853
uv_spawn requires stdio pipes to be initialized
2011-07-29 15:37:00 -07:00
Ben Noordhuis
eed6f395d1
pipe: uv_pipe_listen raises UV_EINVAL on unbound socket
2011-07-29 04:22:59 +02:00
Ben Noordhuis
8e8af8fd34
uv-unix: use lock file to detect stale UNIX sockets
2011-07-29 03:59:55 +02:00
Ben Noordhuis
3c057ff8e5
uv-unix: add simple lock file API for internal use
2011-07-29 03:59:55 +02:00
Ryan Dahl
cf5babef80
Fix getaddrinfo bug
2011-07-28 21:47:43 -04:00
Ryan Dahl
a0994ac8fb
Fix solaris build
2011-07-28 23:41:39 +00:00
Tom Hughes
6203c932d4
Fix memleak in libeio.
2011-07-27 23:23:28 +02:00
Igor Zinkovsky
fc7bc2be70
fix mingw build; add stubs for child process API
2011-07-27 11:05:32 -07:00
Ben Noordhuis
a1adfe3e23
uv-unix: cast argument to uv__stream_open() to uv_stream_t*
2011-07-27 03:55:11 +02:00
Ryan Dahl
92bc7b4959
Start uv_spawn()
...
Unix only at the moment. Lacks test for stdio
2011-07-25 16:19:27 -04:00
Igor Zinkovsky
252da78830
uv_std_handle + uv_listen on stdin
2011-07-25 10:28:50 -07:00
Igor Zinkovsky
e7497227bd
merge uv_tcp_listen and uv_pipe_listen into uv_listen
2011-07-22 16:57:09 -07:00
Ryan Dahl
84ebddad88
long lines
2011-07-22 03:35:12 -07:00
Bert Belder
2806b0386b
Windows: do not initialize pipe handle in uv_pipe_accept
2011-07-22 12:08:27 +02:00
Ben Noordhuis
52487194cf
uv-unix: fix 'comparison between signed and unsigned integer expressions'
2011-07-22 01:45:06 +02:00
Ben Noordhuis
272f164e6a
uv-unix: uv_pipe_bind: raise UV_EACCESS on inaccessible socket
...
Fixes failing test pipe_bind_error_addrnotavail.
2011-07-21 19:48:42 +02:00
Igor Zinkovsky
186abb00bc
windows: return UV_EACCESS for invalid pipe name
2011-07-21 10:39:08 -07:00
Ben Noordhuis
fb42f82df6
uv-unix: uv_pipe_bind: raise UV_EINVAL if pipe already bound
...
Fixes failing test pipe_bind_error_inval.
2011-07-21 18:18:34 +02:00
Ben Noordhuis
580a5b464f
uv-unix: uv_pipe_listen: raise UV_ENOTCONN if pipe not bound
...
Fixes failing test pipe_listen_without_bind.
2011-07-21 18:18:34 +02:00
Ben Noordhuis
1028a9c6a7
uv-unix: handle EINTR properly
...
Fixes #113 .
2011-07-21 15:22:59 +02:00
Bert Belder
5b532d5f60
Windows: do not hang if LOOP->refs become 0 in a prepare callback
2011-07-21 14:57:27 +02:00
Bert Belder
6e505766be
Windows: follow libev loop semantics more closely
2011-07-21 04:25:01 +02:00
Igor Zinkovsky
f8bdddcda9
Allow pipe name to be in utf8 for uv_pipe_bind and uv_pipe_connect
2011-07-20 18:55:40 -07:00
Igor Zinkovsky
ee5236cf56
Windows: make uv_pipe_bind fail for the pipe name already in-use
2011-07-20 18:48:35 -07:00
Ben Noordhuis
c4611a4148
uv-unix: move stream->fd >= 0 asserts out of connection error path
...
on_connect callback must be invoked even if the connect() syscall
fails. stream->fd == -1 in that case.
2011-07-21 03:35:14 +02:00
Bert Belder
d9612fe0e7
More changes related to uv_close returning void
2011-07-21 03:27:43 +02:00
Ryan Dahl
b931c9313f
uv_close returns void
2011-07-20 18:03:48 -07:00
Igor Zinkovsky
2765509430
Windows: Use PeekNamedPipe instead of non-blocking reads to peek at the pipe buffer
2011-07-21 02:25:09 +02:00
Ben Noordhuis
66f936bfd7
uv-unix: call uv__accept() instead of accept()
...
uv__accept() puts the socket in non-blocking close-on-exec mode,
accept() by itself does not.
Solves the case of the mysteriously hanging HTTP benchmarks.
2011-07-21 02:13:02 +02:00
Ben Noordhuis
332bbecd19
uv-unix: defer uv_pipe_connect callback to next tick
2011-07-20 23:06:44 +02:00
Ryan Dahl
1fda135ff2
understand EBADF
2011-07-20 11:05:53 -07:00
Ryan Dahl
eadfb14884
unix: uv_write shouldn't assert fd >= 0
2011-07-20 10:51:08 -07:00
Ben Noordhuis
ce5eb6d85a
config-unix: drop --std=c89 on cygwin, hides CLOCK_MONOTONIC.
...
Fixes #112 .
2011-07-20 17:58:27 +02:00
Ben Noordhuis
e6075842e8
uv-unix: in uv_pipe_init: zero the _whole_ uv_pipe_t struct.
2011-07-20 01:14:17 +02:00
Bert Belder
ca3cfbae74
Windows: use low-res event loop clock.
...
For much better performance. Closes #88 .
2011-07-19 17:32:43 +02:00
Bert Belder
86f1ca90e5
Windows: implement uv_hrtime()
2011-07-19 15:01:12 +02:00
Bert Belder
cd0dcce98c
Windows: use _strdup instead of strdup
2011-07-19 15:01:11 +02:00
Ben Noordhuis
7cc527997f
uv-common: fix 'initialization discards qualifiers from pointer target type'
2011-07-19 13:51:31 +02:00
Ben Noordhuis
3207f8ae40
uv-unix: fix 'passing argument 1 of ‘uv__stream_open’ from incompatible pointer type'
2011-07-19 13:51:31 +02:00
Ben Noordhuis
c0d4669f87
uv-unix: fix 'implicit declaration of function ‘accept4’'
2011-07-19 13:51:31 +02:00
Ryan Dahl
d4563a197a
Allow and test for lazy uv_tcp_listen
2011-07-19 02:40:54 -07:00
Bert Belder
3a91232f66
Split up uv-win.c
2011-07-19 03:47:30 +02:00
Ryan Dahl
07b49ce59a
add uv_ip4_name and uv_ip6_name
2011-07-18 17:39:04 -07:00
Ben Noordhuis
4eff34da43
uv-unix: pipes API implementation
...
Based on UNIX sockets to avoid the vagaries of FIFOs
in asynchronous mode. Currently unlinks stale sockets
before binding and cleans them up again after shutdown.
2011-07-19 00:58:02 +02:00
Igor Zinkovsky
4d31f838b0
Windows: handle ERROR_PIPE_BUSY in uv_pipe_connect
2011-07-18 13:02:32 -07:00
Bert Belder
c1bddb9677
Stop g++ from complaining about anonymous struct usage
2011-07-16 00:33:31 +02:00
Bert Belder
d56af313ee
Revert "uv_win: uv_pipe_connect should return -1 on error"
...
This reverts commit 7b4607348a .
2011-07-15 20:26:08 +02:00
Shigeki Ohtsu
1be48f12a0
ev: define HAVE_SYNC_FILE_RANGE if kernel >= 2.6.17 *and* glibc version >= 2.6
2011-07-15 15:44:20 +02:00
Henry Rawas
d540872107
uv-win: allow listen on unbound tcp handle
2011-07-15 02:49:34 +02:00
Bert Belder
7b4607348a
uv_win: uv_pipe_connect should return -1 on error
2011-07-15 02:38:35 +02:00
Bert Belder
0ea4c87f8b
Windows implementation of new request API
...
This changes uv-win to use the new uv_req subclasses.
It gets rid of the uv_req.flags field. There used to be only request flag
(UV_REQ_PENDING), and it was mostly obsolete; it only had a real purpose for
internal uv_read requests. Now we'll use the UV_HANDLE_READ_PENDING flag on
the handle instead.
This patch also simplifies the accept logic for named pipes on windows. We
no longer have a separate struct to store information about established
connections. Instead we just carry over the windows HANDLE from the accept
request to the client handle in uv_pipe_accept().
2011-07-14 10:46:08 -07:00
Ryan Dahl
abe0b1ea61
Better request API
...
Instead of uv_shutdown, uv_write, uv_connect taking raw uv_req_t we subclass
uv_req_t into uv_shutdown_t, uv_write_t, and uv_connect_t.
uv_req_init is removed.
2011-07-14 10:45:28 -07:00
Igor Zinkovsky
f5ff869488
allocate windows pipe handles on demand
2011-07-13 20:43:10 -07:00
Bert Belder
4a6efee4ce
uv-win: get rid of unused variables
2011-07-14 03:00:20 +02:00
Ben Noordhuis
f142a4b60a
uv-linux: remove unused variables
2011-07-13 23:59:30 +02:00
Ben Noordhuis
b50105e491
uv-unix: remove unused variable
2011-07-13 23:59:01 +02:00
Ben Noordhuis
932f0ad16b
uv-linux: fix warning: implicit declaration of function ‘readlink’
2011-07-13 23:46:30 +02:00
Ben Noordhuis
f560f75a17
uv-unix: fix warning: control reaches end of non-void function
2011-07-13 23:46:30 +02:00
Ben Noordhuis
e364dd15c1
uv-unix: fix warning: no return statement in function returning non-void
2011-07-13 23:46:30 +02:00
Ben Noordhuis
aad95b841e
uv-unix: increment check_init counter in uv_check_init()
2011-07-13 23:05:09 +02:00
Bert Belder
28650425e2
uv-win: refactor request processing
2011-07-13 21:49:15 +02:00
Ben Noordhuis
48eb98c464
unix: implement uv_getsockname()
2011-07-13 00:55:35 +02:00
Ben Noordhuis
f852c517a1
Change uv_pipe_*() prototypes from char* to const char*.
2011-07-13 00:12:30 +02:00
Henry Rawas
6a67b51b4c
fix uv_getsockname for listening socket
2011-07-12 22:43:43 +02:00
Henry Rawas
6b32ebc54f
uv_getsockname
2011-07-12 09:57:08 -07:00
Igor Zinkovsky
2e49cc56d1
Rename uv_pipe_create to uv_pipe_bind.
...
Fixes issue #97 .
2011-07-11 15:24:35 -07:00
Ben Noordhuis
1a0e452de1
freebsd: add uv_hrtime().
2011-07-11 03:00:34 +02:00
Ben Noordhuis
cef595eedc
Fix indentation in src/uv-freebsd.c
2011-07-11 03:00:34 +02:00
Ben Noordhuis
33b1b7acb9
Fix compiler errors on FreeBSD.
...
Fixes #93 .
2011-07-11 02:43:01 +02:00
Ben Noordhuis
e2b2df6d2b
Fix alloc-after-close error, properly disarm uv_tcp_t handle.
2011-07-10 16:50:28 +02:00
Igor Zinkovsky
b6a6dae34f
Named pipes implementation for Windows
2011-07-09 21:41:04 +02:00
Bert Belder
5aa8c005ec
Windows: call shutdown before closesocket to ensure graceful disconnect
2011-07-09 21:31:48 +02:00
Ben Noordhuis
f7a3789ee7
Remove zero-length buffers from the write queue.
...
Zero-length buffers were written out but not removed,
so the write loop never terminated.
Fixes failing node.js test test/simple/test-http-1.0.js
2011-07-09 01:25:39 +02:00
Igor Zinkovsky
e147155821
fix in uv_insert_pending_req to work with multiple requests
2011-07-08 11:49:04 -07:00
Robert Mustacchi
8287551b91
Fix SunOS build
2011-07-07 23:55:50 -07:00
Ryan Dahl
18fa8c0ecd
Move ev.h to include/
2011-07-07 21:55:01 -07:00
Robert Mustacchi
8c00b369b4
C99 compatibility.
...
Get 99% of the way there for --std=c89 -pedantic for core files. Also cleans
up follow up warnings and others in tests.
2011-07-07 21:39:08 -07:00
Robert Mustacchi
c946697e7c
C89 compatibility.
...
This changes the libev constants to be the corresponding negative values.
Without this the header file is not valid ISO C 89. This fix makes the uv
header compile fine in a simple C 89 program.
2011-07-07 21:39:07 -07:00
Robert Mustacchi
341ecab2ef
Remove extra dereference on hints
2011-07-07 21:39:07 -07:00
Ben Noordhuis
a74f339d17
Fix linux syscall detection.
2011-07-07 22:06:44 +02:00
Bert Belder
cb07847949
Remove obsolete file
2011-07-07 18:09:05 +02:00
Bert Belder
81bb15feed
Change msvc projects, more sanity in ares build config on windows
2011-07-07 18:07:53 +02:00
Ryan Dahl
ce8ff3031c
src/ and include/ directories
...
Helps #71 but does not update the MSVC files.
2011-07-07 07:52:57 -07:00