Commit Graph

3517 Commits

Author SHA1 Message Date
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
Ben Noordhuis
983fa68e9f 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.

This is a back-port of commit 82f2472 from the master branch.
2013-09-05 21:33:59 +02:00
Ben Noordhuis
712835a673 build: remove GCC_WARN_ABOUT_MISSING_NEWLINE
Not compatible with non-Apple gcc builds.  Fixes the following build
error:

    gcc-4.8: error: unrecognized command line option '-Wnewline-eof'
2013-09-05 21:33:59 +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
7e5c63c88d Now working on v0.10.17 2013-09-05 16:45:51 +02:00
Bert Belder
2bce230d81 2013.09.06, Version 0.10.16 (Stable)
Changes since version 0.10.15:

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

* windows: make uv_fs_open() report EINVAL when invalid arguments are
  passed (Bert Belder)

* windows: make uv_fs_open() report _open_osfhandle() failure correctly
  (Bert Belder)

* windows: make uv_fs_chmod() report errors correctly (Bert Belder)

* windows: wrap multi-statement macros in do..while block (Bert Belder)
2013-09-05 16:45:45 +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
Bert Belder
faf2c5932c 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 08:52:14 +02:00
Bert Belder
812717d0dd 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 08:52:11 +02:00
Bert Belder
39bef32906 windows/fs: wrap multi-statement macros in do..while block 2013-09-05 08:52:03 +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
61b20e8d46 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:19:18 +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