From 0cd6d164d664658c4e10fcb02f3a0a945f5022e7 Mon Sep 17 00:00:00 2001 From: tidwall Date: Mon, 5 Nov 2018 12:07:18 -0700 Subject: [PATCH] Update evio --- Gopkg.lock | 6 +++--- vendor/github.com/tidwall/evio/README.md | 12 ++---------- vendor/github.com/tidwall/evio/evio_unix.go | 13 ++++++++++++- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/Gopkg.lock b/Gopkg.lock index 85b5a6a6..ec4fd9de 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -231,15 +231,15 @@ revision = "b67b1b8c1658cb01502801c14e33c61e6c4cbb95" [[projects]] - digest = "1:8aa59623aefb49c419e5b24179583e41df4b8c2f6a567f2cb8156a78a32e554a" + digest = "1:1f7026c4840ae2a06e892ffcad5a36416de0a7e5be33ce65449435fd8f15414b" name = "github.com/tidwall/evio" packages = [ ".", "internal", ] pruneopts = "" - revision = "3a190d6d209c66b1fee96ee3db9e70c71e3635d5" - version = "v1.0.0" + revision = "ea610eff86981249be649bbdcedbf409a2db2173" + version = "v1.0.1" [[projects]] branch = "master" diff --git a/vendor/github.com/tidwall/evio/README.md b/vendor/github.com/tidwall/evio/README.md index 84d569b1..bc5f9678 100644 --- a/vendor/github.com/tidwall/evio/README.md +++ b/vendor/github.com/tidwall/evio/README.md @@ -9,17 +9,9 @@ `evio` is an event loop networking framework that is fast and small. It makes direct [epoll](https://en.wikipedia.org/wiki/Epoll) and [kqueue](https://en.wikipedia.org/wiki/Kqueue) syscalls rather than using the standard Go [net](https://golang.org/pkg/net/) package, and works in a similar manner as [libuv](https://github.com/libuv/libuv) and [libevent](https://github.com/libevent/libevent). -The goal of this project is to create a server framework for Go that performs on par with [Redis](http://redis.io) and [Haproxy](http://www.haproxy.org) for packet handling. My hope is to use this as a foundation for [Tile38](https://github.com/tidwall/tile38) and a future L7 proxy for Go... and a bunch of other stuff. +The goal of this project is to create a server framework for Go that performs on par with [Redis](http://redis.io) and [Haproxy](http://www.haproxy.org) for packet handling. It was built to be the foundation for [Tile38](https://github.com/tidwall/tile38) and a future L7 proxy for Go. -**Just to be perfectly clear** - -This project is not intended to be a general purpose replacement for the standard Go net package or goroutines. It's for building specialized services such as key value stores, L7 proxies, static websites, etc. - -You would not want to use this framework if you need to handle long-running requests (milliseconds or more). For example, a web api that needs to connect to a mongo database, authenticate, and respond; just use the Go net/http package instead. - -There are many popular event loop based applications in the wild such as Nginx, Haproxy, Redis, and Memcached. All of these are very fast and written in C. - -The reason I wrote this framework is so that I can build certain networking services that perform like the C apps above, but I also want to continue to work in Go. +*Please note: Evio should not be considered as a drop-in replacement for the standard Go net or net/http packages.* ## Features diff --git a/vendor/github.com/tidwall/evio/evio_unix.go b/vendor/github.com/tidwall/evio/evio_unix.go index f05e3ec5..16c696e5 100644 --- a/vendor/github.com/tidwall/evio/evio_unix.go +++ b/vendor/github.com/tidwall/evio/evio_unix.go @@ -7,6 +7,7 @@ package evio import ( + "io" "net" "os" "runtime" @@ -458,7 +459,17 @@ func (c *detachedConn) Close() error { } func (c *detachedConn) Read(p []byte) (n int, err error) { - return syscall.Read(c.fd, p) + n, err = syscall.Read(c.fd, p) + if err != nil { + return n, err + } + if n == 0 { + if len(p) == 0 { + return 0, nil + } + return 0, io.EOF + } + return n, nil } func (c *detachedConn) Write(p []byte) (n int, err error) {