libuv/test
Jeremy Whitlock eb3f48ebaf win: do not read more from stream than available
On Windows the pipe implementation could read more from a stream than
was available and it would create an assertion failure.  This change
will make it so we read the minimum of the available data or the length
of the data.

To test this, I took the existing ipc_send_recv_tcp test and updated it
to do two writes and two read on each side of the pipe since that was the
reproduction recipe used by the reporter.  This approach reproduced the
issue on Windows and the committed fix resolved the issue.

Fixes: https://github.com/libuv/libuv/issues/505
PR-URL: https://github.com/libuv/libuv/pull/549
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
2015-12-08 09:28:15 +01:00
..
fixtures
benchmark-async-pummel.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
benchmark-async.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
benchmark-fs-stat.c unix,windows: allow NULL loop for sync fs requests 2015-08-18 15:39:21 +02:00
benchmark-getaddrinfo.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-list.h
benchmark-loop-count.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-million-async.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
benchmark-million-timers.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-multi-accept.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
benchmark-ping-pongs.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-pound.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-pump.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-sizes.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-spawn.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-tcp-write-batch.c include: merge uv_tcp_connect and uv_tcp_connect6 2013-09-04 03:16:36 +02:00
benchmark-thread.c
benchmark-udp-pummel.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
blackhole-server.c tcp: uv_tcp_dualstack() 2014-01-19 23:07:42 +00:00
dns-server.c tcp: uv_tcp_dualstack() 2014-01-19 23:07:42 +00:00
echo-server.c unix,windows: allow NULL loop for sync fs requests 2015-08-18 15:39:21 +02:00
run-benchmarks.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
run-tests.c win: remove UV_HANDLE_CONNECTED 2015-07-07 09:45:48 +02:00
runner-unix.c test: plug small memory leak in unix test runner 2015-08-18 15:39:18 +02:00
runner-unix.h
runner-win.c test: canonicalize test runner path 2014-12-01 16:20:51 +01:00
runner-win.h win: use the MSVC provided snprintf where possible 2015-09-29 09:01:33 +02:00
runner.c win: do not read more from stream than available 2015-12-08 09:28:15 +01:00
runner.h test: canonicalize test runner path 2014-12-01 16:20:51 +01:00
task.h win: do not read more from stream than available 2015-12-08 09:28:15 +01:00
test-active.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-async-null-cb.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-async.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-barrier.c Revert "test: make barrier test more rigorous" 2014-07-02 00:16:50 +02:00
test-callback-order.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-callback-stack.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-close-fd.c unix: set non-block mode in uv_{pipe,tcp,udp}_open 2015-01-14 19:46:54 +01:00
test-close-order.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-condvar.c
test-connection-fail.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-cwd-and-chdir.c test: fix cwd_and_chdir test on Unix 2014-12-16 08:12:46 +01:00
test-default-loop-close.c test: add test for closing and recreating default loop 2014-09-15 21:34:09 +02:00
test-delayed-accept.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-dlerror.c test: check dlerror is "no error" in no error case 2014-12-14 20:33:43 +01:00
test-embed.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-emfile.c test: don't abort on setrlimit() failure 2015-10-08 21:47:48 +02:00
test-error.c
test-fail-always.c
test-fs-event.c win: fix path for removed and renamed fs events 2015-12-07 16:16:46 +01:00
test-fs-poll.c fs, pipe: no trailing terminator in exact sized buffers 2015-01-27 11:31:16 +01:00
test-fs.c fs: add uv_fs_realpath() 2015-12-05 11:32:58 +01:00
test-get-currentexe.c linux: fix uv_exepath(size=1) UV_EINVAL error 2015-01-03 23:40:31 +01:00
test-get-loadavg.c test: fix -Wtautological-pointer-compare warnings 2015-11-18 22:37:16 +01:00
test-get-memory.c
test-getaddrinfo.c test: use FQDN in getaddrinfo_fail test 2015-10-23 18:28:51 +02:00
test-getnameinfo.c test: fix -Wtautological-pointer-compare warnings 2015-11-18 22:37:16 +01:00
test-getsockname.c unix, win: add send_queue_size and send_queue_count to uv_udp_t 2014-07-04 18:28:18 +02:00
test-handle-fileno.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
test-homedir.c unix,win: add uv_os_homedir() 2015-05-21 17:31:35 +02:00
test-hrtime.c
test-idle.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
test-ip4-addr.c test: remove C++ style comment 2013-12-13 22:37:14 +04:00
test-ip6-addr.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
test-ipc-send-recv.c win: do not read more from stream than available 2015-12-08 09:28:15 +01:00
test-ipc.c test,freebsd: fix ipc_listen_xx_write tests 2015-09-08 10:45:10 +02:00
test-list.h fs: add uv_fs_realpath() 2015-12-05 11:32:58 +01:00
test-loop-alive.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-loop-close.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-loop-configure.c linux: fix epoll_pwait() sigmask size calculation 2014-12-25 14:37:02 +01:00
test-loop-handles.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
test-loop-stop.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-loop-time.c windows: add uv_backend_timeout 2014-08-04 23:18:38 +02:00
test-multiple-listen.c tcp: uv_tcp_dualstack() 2014-01-19 23:07:42 +00:00
test-mutexes.c test: add tests for the uv_rwlock implementation 2015-09-22 11:17:49 -04:00
test-osx-select.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
test-pass-always.c
test-ping-pong.c test: skip ipv6 tests when ipv6 is not supported 2014-12-29 17:14:48 +01:00
test-pipe-bind-error.c
test-pipe-close-stdout-read-stdin.c test: fix compilation warnings when building with Clang 2014-12-13 20:57:43 +01:00
test-pipe-connect-error.c
test-pipe-connect-multiple.c win: fix replacing pipe handle for pipe servers 2015-08-24 23:20:35 +02:00
test-pipe-connect-prepare.c unix: don't block for io if any io handle is primed 2015-05-12 07:37:26 +02:00
test-pipe-getsockname.c win, unix: add pipe_peername implementation 2015-01-28 21:40:32 +01:00
test-pipe-pending-instances.c win: fix setting pipe pending instances after bind 2015-08-24 23:20:35 +02:00
test-pipe-sendmsg.c pipe: allow queueing pending handles 2014-03-04 00:34:29 +04:00
test-pipe-server-close.c test: make test-pipe-server-close pass on linux 2013-12-21 02:34:44 -08:00
test-pipe-set-non-blocking.c test: fix race condition in multithreaded test 2015-03-11 15:42:34 +01:00
test-platform-output.c test: fix platform_output netmask printing. 2015-05-28 11:09:25 +02:00
test-poll-close-doesnt-corrupt-stack.c win: fix compilation of tests 2014-12-10 16:44:27 +01:00
test-poll-close.c code style: strip trailing whitespace 2013-12-20 19:38:37 -08:00
test-poll-closesocket.c windows: fix compilation of tests 2014-11-26 08:32:59 +01:00
test-poll.c Revert "stream: squelch ECONNRESET error if already closed" 2015-08-07 14:19:08 +02:00
test-process-title.c test: skip process_title for AIX 2015-11-11 22:37:33 +01:00
test-ref.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-run-nowait.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-run-once.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-semaphore.c
test-shutdown-close.c unix, windows: make uv_is_*() always return 0 or 1 2013-09-12 13:30:06 +02:00
test-shutdown-eof.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-shutdown-twice.c unix: correct error when calling uv_shutdown twice 2014-02-15 16:55:06 +01:00
test-signal-multiple-loops.c test: Fix two memory leaks 2015-08-11 13:35:34 +02:00
test-signal.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-socket-buffer-size.c unix, windows: add uv_recv_buffer_size and uv_send_buffer_size 2014-08-09 11:36:35 +02:00
test-spawn.c win: use the MSVC provided snprintf where possible 2015-09-29 09:01:33 +02:00
test-stdio-over-pipes.c unix: sanity-check fds before closing 2013-10-01 03:55:54 +02:00
test-tcp-bind6-error.c test: skip ipv6 tests when ipv6 is not supported 2014-12-29 17:14:48 +01:00
test-tcp-bind-error.c unix, windows: validate flags on uv_udp|tcp_bind 2014-04-22 22:57:01 +02:00
test-tcp-close-accept.c test: disable tcp_close_accept on Windows 2014-08-05 00:14:26 +02:00
test-tcp-close-while-connecting.c tests: skip some tests when network is unreachable 2015-07-13 10:28:46 +02:00
test-tcp-close.c tcp: uv_tcp_dualstack() 2014-01-19 23:07:42 +00:00
test-tcp-connect6-error.c include: merge uv_tcp_connect and uv_tcp_connect6 2013-09-04 03:16:36 +02:00
test-tcp-connect-error-after-write.c include: merge uv_tcp_connect and uv_tcp_connect6 2013-09-04 03:16:36 +02:00
test-tcp-connect-error.c include: merge uv_tcp_connect and uv_tcp_connect6 2013-09-04 03:16:36 +02:00
test-tcp-connect-timeout.c tests: skip some tests when network is unreachable 2015-07-13 10:28:46 +02:00
test-tcp-create-socket-early.c unix, win: add ability to create tcp/udp sockets early 2015-06-19 09:37:19 +02:00
test-tcp-flags.c
test-tcp-oob.c Revert "test: fix tcp_oob occassionally timing out" 2015-04-07 11:15:49 +02:00
test-tcp-open.c Revert "stream: squelch ECONNRESET error if already closed" 2015-08-07 14:19:08 +02:00
test-tcp-read-stop.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-tcp-shutdown-after-write.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-tcp-try-write.c stream: support empty uv_try_write on unix 2015-10-04 18:06:08 -04:00
test-tcp-unexpected-read.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-tcp-write-after-connect.c unix: fix tcp write after bad connect freezing 2014-08-21 16:23:43 +02:00
test-tcp-write-fail.c win, test: fix compilation warning 2015-09-29 09:57:27 +02:00
test-tcp-write-queue-order.c test: use less requests on tcp-write-queue-order 2014-09-04 18:45:39 +02:00
test-tcp-write-to-half-open-connection.c tcp: uv_tcp_dualstack() 2014-01-19 23:07:42 +00:00
test-tcp-writealot.c include: merge uv_tcp_connect and uv_tcp_connect6 2013-09-04 03:16:36 +02:00
test-thread-equal.c unix, windows: add uv_thread_equal 2014-10-20 09:51:49 +02:00
test-thread.c unix, windows: add uv_loop_init and uv_loop_close 2014-02-21 09:56:13 +01:00
test-threadpool-cancel.c fs: add uv_fs_realpath() 2015-12-05 11:32:58 +01:00
test-threadpool.c
test-timer-again.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
test-timer-from-check.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-timer.c unix, windows: don't allow a NULL callback on timers 2014-09-05 16:59:18 +02:00
test-tty.c test: fix test/test-tty.c for AIX 2015-11-24 21:54:48 +01:00
test-udp-bind.c unix, windows: do not set SO_REUSEADDR by default on udp 2014-04-02 01:21:35 +02:00
test-udp-create-socket-early.c unix, win: add ability to create tcp/udp sockets early 2015-06-19 09:37:19 +02:00
test-udp-dgram-too-big.c include: merge uv_udp_send and uv_udp_send6 2013-09-04 03:17:29 +02:00
test-udp-ipv6.c test,freebsd: skip udp_dual_stack if not supported 2015-11-17 09:31:26 +01:00
test-udp-multicast-interface6.c test: skip ipv6 tests when ipv6 is not supported 2014-12-29 17:14:48 +01:00
test-udp-multicast-interface.c tests: skip some tests when network is unreachable 2015-07-13 10:28:46 +02:00
test-udp-multicast-join6.c test: conditionally skip udp_ipv6_multicast_join6 2015-06-29 09:35:26 +02:00
test-udp-multicast-join.c tests: skip some tests when network is unreachable 2015-07-13 10:28:46 +02:00
test-udp-multicast-ttl.c tests: skip some tests when network is unreachable 2015-07-13 10:28:46 +02:00
test-udp-open.c unix, win: prevent replacing fd in uv_{udp,tcp,pipe}_t 2015-06-19 09:36:41 +02:00
test-udp-options.c test: skip udp_options6 if there no IPv6 support 2015-01-05 12:32:57 +01:00
test-udp-send-and-recv.c unix, win: add send_queue_size and send_queue_count to uv_udp_t 2014-07-04 18:28:18 +02:00
test-udp-send-immediate.c unix: remove incorrect assert 2014-07-11 22:53:59 +02:00
test-udp-send-unreachable.c windows: fix buffer leak after failed udp send 2014-08-28 08:41:43 +02:00
test-udp-try-send.c unix, win: add uv_udp_try_send 2014-07-04 18:30:33 +02:00
test-walk-handles.c unix, windows: removed unused status parameter 2014-03-17 21:42:36 +01:00
test-watcher-cross-stop.c test: fix watcher_cross_stop on Windows 2014-08-21 23:34:51 +02:00