Handle EAGAIN in some of the read_cb tests

This commit is contained in:
Ryan Dahl 2011-06-22 14:04:06 +02:00
parent 9b49e4c359
commit af15cbe6e9
2 changed files with 18 additions and 5 deletions

View File

@ -132,15 +132,20 @@ static void start_server() {
static void read_cb(uv_tcp_t* tcp, ssize_t nread, uv_buf_t buf) {
/* The server will not send anything, it should close gracefully. */
ASSERT(tcp != NULL);
ASSERT(nread == -1);
ASSERT(uv_last_error().code == UV_EOF);
if (buf.base) {
free(buf.base);
}
uv_close((uv_handle_t*)tcp, close_cb);
if (nread != -1) {
ASSERT(nread == 0);
ASSERT(uv_last_error().code == UV_EAGAIN);
} else {
ASSERT(tcp != NULL);
ASSERT(nread == -1);
ASSERT(uv_last_error().code == UV_EOF);
uv_close((uv_handle_t*)tcp, close_cb);
}
}

View File

@ -46,8 +46,16 @@ static uv_buf_t alloc_cb(uv_tcp_t* tcp, size_t size) {
static void read_cb(uv_tcp_t* t, ssize_t nread, uv_buf_t buf) {
uv_err_t err = uv_last_error();
ASSERT(t == &tcp);
if (nread == 0) {
ASSERT(err.code == UV_EAGAIN);
free(buf.base);
return;
}
if (!got_q) {
ASSERT(nread == 1);
ASSERT(!got_eof);
@ -56,7 +64,7 @@ static void read_cb(uv_tcp_t* t, ssize_t nread, uv_buf_t buf) {
got_q = 1;
puts("got Q");
} else {
ASSERT(uv_last_error().code == UV_EOF);
ASSERT(err.code == UV_EOF);
if (buf.base) {
free(buf.base);
}