forked from cory/tildefriends
libuv 1.44.2
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@3934 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
46
deps/libuv/test/test-tcp-close-reset.c
vendored
46
deps/libuv/test/test-tcp-close-reset.c
vendored
@ -25,6 +25,12 @@
|
||||
#include <errno.h>
|
||||
#include <string.h> /* memset */
|
||||
|
||||
#ifdef _WIN32
|
||||
# define INVALID_FD (INVALID_HANDLE_VALUE)
|
||||
#else
|
||||
# define INVALID_FD (-1)
|
||||
#endif
|
||||
|
||||
static uv_loop_t* loop;
|
||||
static uv_tcp_t tcp_server;
|
||||
static uv_tcp_t tcp_client;
|
||||
@ -62,9 +68,22 @@ static void do_write(uv_tcp_t* handle) {
|
||||
|
||||
|
||||
static void do_close(uv_tcp_t* handle) {
|
||||
uv_os_fd_t fd;
|
||||
int r;
|
||||
|
||||
if (shutdown_before_close == 1) {
|
||||
ASSERT(0 == uv_shutdown(&shutdown_req, (uv_stream_t*) handle, shutdown_cb));
|
||||
ASSERT(UV_EINVAL == uv_tcp_close_reset(handle, close_cb));
|
||||
} else if (shutdown_before_close == 2) {
|
||||
r = uv_fileno((const uv_handle_t*) handle, &fd);
|
||||
ASSERT_EQ(r, 0);
|
||||
ASSERT_NE(fd, INVALID_FD);
|
||||
#ifdef _WIN32
|
||||
ASSERT_EQ(0, shutdown(fd, SD_BOTH));
|
||||
#else
|
||||
ASSERT_EQ(0, shutdown(fd, SHUT_RDWR));
|
||||
#endif
|
||||
ASSERT_EQ(0, uv_tcp_close_reset(handle, close_cb));
|
||||
} else {
|
||||
ASSERT(0 == uv_tcp_close_reset(handle, close_cb));
|
||||
ASSERT(UV_ENOTCONN == uv_shutdown(&shutdown_req, (uv_stream_t*) handle, shutdown_cb));
|
||||
@ -288,3 +307,30 @@ TEST_IMPL(tcp_close_reset_accepted_after_shutdown) {
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
return 0;
|
||||
}
|
||||
|
||||
TEST_IMPL(tcp_close_reset_accepted_after_socket_shutdown) {
|
||||
int r;
|
||||
|
||||
loop = uv_default_loop();
|
||||
|
||||
start_server(loop, &tcp_server);
|
||||
|
||||
client_close = 0;
|
||||
shutdown_before_close = 2;
|
||||
|
||||
do_connect(loop, &tcp_client);
|
||||
|
||||
ASSERT_EQ(write_cb_called, 0);
|
||||
ASSERT_EQ(close_cb_called, 0);
|
||||
ASSERT_EQ(shutdown_cb_called, 0);
|
||||
|
||||
r = uv_run(loop, UV_RUN_DEFAULT);
|
||||
ASSERT_EQ(r, 0);
|
||||
|
||||
ASSERT_EQ(write_cb_called, 4);
|
||||
ASSERT_EQ(close_cb_called, 1);
|
||||
ASSERT_EQ(shutdown_cb_called, 0);
|
||||
|
||||
MAKE_VALGRIND_HAPPY();
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user