Commit Graph

2454 Commits

Author SHA1 Message Date
Ben Noordhuis
b83109c524 include: fix typo in comment in uv.h 2013-09-08 23:25:07 +02:00
Ben Noordhuis
9e4982f5c9 include: remove UV_IO_PRIVATE_FIELDS macro
It's an alias for UV_IO_PRIVATE_PLATFORM_FIELDS.  Remove the macro and
use UV_IO_PRIVATE_PLATFORM_FIELDS directly.
2013-09-08 20:21:24 +02:00
Ben Noordhuis
b7d333fc91 include: clean up includes in uv.h
* size_t is defined in <stddef.h>, not <sys/types.h>

* Simplify the platform check.
2013-09-08 20:14:30 +02:00
Ben Noordhuis
02e8c8ef65 include: clarify uv_tcp_bind() behavior
On BSD-like platforms, EADDRINUSE is returned by the bind() system call.
On other platforms, it's returned by the listen() system call.

In other words, some platforms are 'first to bind wins', others are
'first to listen wins' - but only with TCP sockets: UNIX domain sockets
always return EADDRINUSE from the bind() system call, UDP sockets don't
call listen() in the first place.

Fixes #769.
2013-09-06 15:15:36 +02:00
Saúl Ibarra Corretgé
2b9c374c1c windows: run close callbacks after polling for i/o
Makes the uv-win behavior compatible with uv-unix.

Fixes #796.
2013-09-06 06:28:42 +02:00
Brian Kaisner
8e23b046a6 build: clarify instructions for Windows
Clarified up front that Python must be installed for all Windows builds
and it must be in the path. Simplified the Windows instructions by
removing the redundant msbuild guidance.

Also added subheadings for each unique build environment.
2013-09-05 21:17:58 +02:00
Bert Belder
20e774c62a windows/fs: handle _open_osfhandle() failure correctly
Until now we assumed that _open_osfhandle() would set _doserrno on
failure. This assumption was very wrong in one obvious case, namely when
the CRT file descriptor table would fill up. In that case errno is set
to EMFILE, but GetLastError() returns zero - which makes sense because
it's not a win32 error but rather a CRT problem.
2013-09-05 09:05:28 +02:00
Bert Belder
489fb4c972 windows/fs: make uv_fs_open() report EINVAL correctly
Before, when the user passed an invalid paramter to uv_fs_open, libuv
would detect this and call SET_REQ_RESULT to set the result value to -1.
SET_REQ_RESULT then stored whatever error code was returned by
GetLastError(), which would have no relationship to the actual problem,
and might as well be zero.
2013-09-05 09:05:28 +02:00
Bert Belder
0f3c910c1b windows/fs: wrap multi-statement macros in do..while block 2013-09-05 09:05:27 +02:00
Ben Noordhuis
5dad19503d Now working on v0.11.14 2013-09-04 14:45:22 +02:00
Ben Noordhuis
f5b6db6c1d 2013.09.05, Version 0.11.13 (Unstable)
Changes since version 0.11.12:

* unix: define _GNU_SOURCE, exposes glibc-isms (Ben Noordhuis)

* windows: check for nonconforming swprintf arguments (Brent Cook)

* build: include internal headers in source list (Brent Cook)

* include: merge uv_tcp_bind and uv_tcp_bind6 (Ben Noordhuis)

* include: merge uv_tcp_connect and uv_tcp_connect6 (Ben Noordhuis)

* include: merge uv_udp_bind and uv_udp_bind6 (Ben Noordhuis)

* include: merge uv_udp_send and uv_udp_send6 (Ben Noordhuis)
2013-09-04 14:45:18 +02:00
Ben Noordhuis
08c6ddeefb include: merge uv_udp_send and uv_udp_send6
Merge uv_udp_send6() into uv_udp_send().  uv_udp_send() now takes a
const struct sockaddr*.
2013-09-04 03:17:29 +02:00
Ben Noordhuis
bcee403ed2 include: merge uv_udp_bind and uv_udp_bind6
Merge uv_udp_bind6() into uv_udp_bind().  uv_udp_bind() now takes a
const struct sockaddr*.
2013-09-04 03:17:04 +02:00
Ben Noordhuis
5c675c4a4e include: merge uv_tcp_connect and uv_tcp_connect6
Merge uv_tcp_connect6() into uv_tcp_connect().  uv_tcp_connect() now
takes a const struct sockaddr*.
2013-09-04 03:16:36 +02:00
Ben Noordhuis
5fceccc535 include: merge uv_tcp_bind and uv_tcp_bind6
Merge uv_tcp_bind6() into uv_tcp_bind().  uv_tcp_bind() now takes a
const struct sockaddr*.
2013-09-04 03:15:30 +02:00
Brent Cook
c363cd0dba build: include internal headers in source list
Allows 'make dist-*' targets to generate working tarballs.
2013-09-04 01:09:42 +02:00
Brent Cook
fe3a11e09f windows: check for nonconforming swprintf arguments
Newer versions of mingw do include the correct API for swprintf.
Check for _CRT_NON_CONFORMING_SWPRINTFS as specified in the swprintf
documentation:
http://msdn.microsoft.com/en-us/library/ybk95axf(v=vs.90).aspx
2013-09-04 01:09:23 +02:00
Ben Noordhuis
f3f23b2d05 unix: define _GNU_SOURCE, exposes glibc-isms
EAI_NODATA and some other getaddrinfo() error codes are returned by
glibc but not exposed in the headers unless _GNU_SOURCE is defined.

Only define in src/uv-common.c because that's the only file that deals
with EAI_* error codes.
2013-09-01 13:50:50 +02:00
Ben Noordhuis
3e054c3629 Now working on v0.11.13 2013-09-03 00:37:15 +02:00
Ben Noordhuis
82d01d5f67 2013.09.03, Version 0.11.12 (Unstable)
Changes since version 0.11.11:

* test: fix epoll_wait() usage in test-embed.c (Ben Noordhuis)

* include: uv_alloc_cb now takes uv_buf_t* (Ben Noordhuis)

* include: uv_read{2}_cb now takes const uv_buf_t* (Ben Noordhuis)

* include: uv_ip[46]_addr now takes sockaddr_in* (Ben Noordhuis)

* include: uv_tcp_bind{6} now takes sockaddr_in* (Ben Noordhuis)

* include: uv_tcp_connect{6} now takes sockaddr_in* (Ben Noordhuis)

* include: uv_udp_recv_cb now takes const uv_buf_t* (Ben Noordhuis)

* include: uv_udp_bind{6} now takes sockaddr_in* (Ben Noordhuis)

* include: uv_udp_send{6} now takes sockaddr_in* (Ben Noordhuis)

* include: uv_spawn takes const uv_process_options_t* (Ben Noordhuis)

* include: make uv_write{2} const correct (Ben Noordhuis)

* windows: fix flags assignment in uv_fs_readdir() (Ben Noordhuis)

* windows: fix stray comments (Ben Noordhuis)

* windows: remove unused is_path_dir() function (Ben Noordhuis)
2013-09-03 00:37:10 +02:00
Ben Noordhuis
76709c6b33 windows: remove unused is_path_dir() function 2013-09-01 08:25:26 +02:00
Ben Noordhuis
585b6b7d1f windows: remove unused variable in tty.c 2013-09-01 08:25:26 +02:00
Ben Noordhuis
d8ab41bee3 windows: fix stray comments 2013-09-01 08:25:25 +02:00
Ben Noordhuis
bdc828972a windows: fix flags assignment in uv_fs_readdir() 2013-09-01 08:25:25 +02:00
Ben Noordhuis
779b8d81e9 include: make uv_write{2} const correct 2013-09-01 08:25:25 +02:00
Ben Noordhuis
8c6ea10502 include: uv_spawn takes const uv_process_options_t*
Passing or returning structs as values makes life hard for people that
work with libuv through a foreign function interface. Switch to a
pointer-based approach.

Fixes #684.
2013-09-01 08:25:00 +02:00
Ben Noordhuis
263da51967 include: uv_udp_send{6} now takes sockaddr_in*
Passing or returning structs as values makes life hard for people that
work with libuv through a foreign function interface. Switch to a
pointer-based approach.

Fixes #684.
2013-09-01 08:02:20 +02:00
Ben Noordhuis
525dbb5e31 include: uv_udp_bind{6} now takes sockaddr_in*
Passing or returning structs as values makes life hard for people that
work with libuv through a foreign function interface. Switch to a
pointer-based approach.

Fixes #684.
2013-09-01 08:02:18 +02:00
Ben Noordhuis
0f7b2963ad include: uv_udp_recv_cb now takes const uv_buf_t*
Passing or returning structs as values makes life hard for people that
work with libuv through a foreign function interface. Switch to a
pointer-based approach.

Fixes #684.
2013-09-01 08:02:17 +02:00
Ben Noordhuis
255671da74 include: uv_tcp_connect{6} now takes sockaddr_in*
Passing or returning structs as values makes life hard for people that
work with libuv through a foreign function interface. Switch to a
pointer-based approach.

Fixes #684.
2013-09-01 08:02:15 +02:00
Ben Noordhuis
daa229ace3 include: uv_tcp_bind{6} now takes sockaddr_in*
Passing or returning structs as values makes life hard for people that
work with libuv through a foreign function interface. Switch to a
pointer-based approach.

Fixes #684.
2013-09-01 08:02:13 +02:00
Ben Noordhuis
8184076879 include: uv_ip[46]_addr now takes sockaddr_in*
Passing or returning structs as values makes life hard for people that
work with libuv through a foreign function interface. Switch to a
pointer-based approach.

Fixes #684.
2013-09-01 08:02:07 +02:00
Ben Noordhuis
b7d027c3a8 include: uv_read{2}_cb now takes const uv_buf_t*
Passing or returning structs as values makes life hard for people that
work with libuv through a foreign function interface. Switch to a
pointer-based approach.

Fixes #684.
2013-09-01 08:01:34 +02:00
Ben Noordhuis
3fb6612233 include: uv_alloc_cb now takes uv_buf_t*
Passing or returning structs as values makes life hard for people that
work with libuv through a foreign function interface. Switch to a
pointer-based approach.

Fixes #684.
2013-09-01 07:57:31 +02:00
Ben Noordhuis
8c9f28b4ac test: fix epoll_wait() usage in test-embed.c
Passing 0 as the `maxevents` argument fails with EINVAL, passing NULL as
the `events` argument fails with EFAULT.

Fixes #915.
2013-08-31 22:09:53 +02:00
Bert Belder
90874cc4de Now working on v0.11.12 2013-08-29 15:31:07 +02:00
Bert Belder
ba876d5353 2013.08.30, Version 0.11.11 (Unstable)
Changes since version 0.11.10:

* unix, windows: add thread-local storage API (Ben Noordhuis)

* linux: don't turn on SO_REUSEPORT socket option (Ben Noordhuis)

* darwin: fix 10.6 build error in fsevents.c (Ben Noordhuis)

* windows: make uv_shutdown() for write-only pipes work (Bert Belder)

* include: update uv_udp_open() / uv_udp_bind() docs (Ben Noordhuis)

* unix: req queue must be empty when destroying loop (Ben Noordhuis)

* unix: move loop functions from core.c to loop.c (Ben Noordhuis)

* darwin: remove CoreFoundation dependency (Ben Noordhuis)

* windows: make autotools build system work with mingw (Keno Fischer)

* windows: fix mingw build (Alex Crichton)

* windows: tweak Makefile.mingw for easier usage (Alex Crichton)

* build: remove _GNU_SOURCE macro definition (Ben Noordhuis)
2013-08-29 15:30:53 +02:00
Bert Belder
2e74e2ceca windows: make uv_shutdown() for write-only pipes work
A couple of issues prevented uv_shutdown() from working correctly with
write-only pipes.

  * The pipe handle wasn't opened with the right permissions, so an
    attempt to probe the state of the write buffer would fail with
    ERROR_ACCESS_DENIED.

  * The pipe flags for child process stdio pipes were always set to
    UV_HANDLE_READABLE and UV_HANDLE_WRITABLE, even in cases where it
    was actually half-duplex.

  * There was no code path that lead to closing the pipe handle if the
    pipe was write-only.
2013-08-29 15:16:52 +02:00
Ben Noordhuis
82f2472b9f darwin: fix 10.6 build error in fsevents.c
Work around an 'initializer element is not constant' build error in
src/unix/fsevents.c by turning the const int flags into #defines.

Only an issue on OS X 10.6 due to the old compiler it uses.

Fixes #908.
2013-08-28 11:59:04 +02:00
Ben Noordhuis
d48168afd0 darwin: remove CoreFoundation dependency
Load the required symbols at run-time rather than linking against the
CoreFoundation (and CoreServices and ApplicationServices) frameworks
at build time.

Should make integration easier for people that bundle libuv with their
own projects because they no longer have to replicate magic -framework
incantations in their top-level build system.
2013-08-27 23:58:21 +02:00
Ben Noordhuis
12933f43c9 unix: move loop functions from core.c to loop.c
Move uv_default_loop(), uv_loop_new() and uv_loop_delete() to loop.c.
2013-08-27 22:48:16 +02:00
Ben Noordhuis
3f2d4d5358 unix: req queue must be empty when destroying loop
Assert that the request queue is empty when destroying the event loop.

Should catch errors where people call uv_loop_delete() when there are
still in-progress work requests (for example.)
2013-08-27 22:48:16 +02:00
Alex Crichton
b647c27b02 windows: fix mingw build
On older mingw installations, DEVICE_TYPE isn't defined. This was
redefined in windows.h, but it was done after it was already attempted
to be used. This moves the #define for DEVICE_TYPE above the usage of
it in windows.h to prevent compilation failures.
2013-08-25 16:02:41 +02:00
Alex Crichton
a9b3fe2e19 windows: tweak Makefile.mingw for easier usage
Default CC to `gcc` instead of `cc` because at least on the mingw
installation I had there was no `cc` executable. This avoids having
to type `CC=gcc` in all the `make` commands.

Also append to `CFLAGS` instead of defining if not previously defined.
These flags are required to build libuv, so they should not be
overridden if other extra CFLAGS are supplied via the command
line as well.
2013-08-25 16:01:33 +02:00
Ben Noordhuis
5d2434bf71 unix, windows: add thread-local storage API
Uses the pthread_key_{create,delete} and pthread_{get,set}specific
functions on UNIX platforms, Tls{Alloc,Free} and Tls{Get,Set}Value
on Windows.

Fixes #904.
2013-08-25 15:51:07 +02:00
Ben Noordhuis
d5ab1c1a3b Revert "build: remove mingw makefile"
As requested by the Rust people.

This reverts commit 8f3621e4dd.
2013-08-26 22:05:01 +02:00
Ben Noordhuis
d3308c25b9 include: update uv_udp_open() / uv_udp_bind() docs
Mention that:

* these functions set the SO_REUSEADDR and SO_REUSEPORT socket flags,
* what the effect of those flags is, and
* that we may remove it someday
2013-08-25 22:00:12 +02:00
Ben Noordhuis
9d60f1ebda linux: don't turn on SO_REUSEPORT socket option
On the BSDs, SO_REUSEPORT is pretty much SO_REUSEADDR with some special
casing for IP multicast.  When two processes (that don't do multicast)
bind to the same address, only the last one receives traffic.  It allows
one to "steal" the bound address from another process.  (Both processes
have to enable SO_REUSEPORT though, so it only works in a cooperative
setting.)

On Linux however, it enables port sharing, not stealing - both processes
receive a share of the traffic.  This is a desirable trait but pre-3.9
kernels don't support the socket option and a libuv program therefore
behaves differently with older kernels or on another platform.

The difference in behavior (sharing vs. stealing) is, in my opinion,
big enough and confusing enough that it merits a rollback.  People
that want this kind of functionality can prepare the socket manually
and hand it off to uv_udp_open().

This commit effectively reverts commit 17452cd.
2013-08-25 21:38:39 +02:00
Ben Noordhuis
d6464c87bd build: remove _GNU_SOURCE macro definition
Compile libuv without -D_GNU_SOURCE, remove mention from the README.

The only place where it's still used is in the test suite and only
because test/test-fs.c uses struct stat directly.
2013-08-24 22:00:48 +02:00
Ben Noordhuis
8f3621e4dd build: remove mingw makefile
Commit e52aa6c adds MinGW support to the autotools build.  Remove the
Makefile, it's no longer needed.
2013-08-24 21:50:08 +02:00