? buffer.po ? evbuffer.po ? evbuffer_new.3.manlint ? event.3.manlint ? event.po ? event_tagging.po ? evutil.po ? kqueue.po ? libevent.so.4.1 ? libevent.so.5.0 ? log.po ? poll.po ? select.po ? signal.po ? signal_set.3 Index: buffer.c =================================================================== RCS file: /cvs/src/lib/libevent/buffer.c,v retrieving revision 1.29 diff -u -p -r1.29 buffer.c --- buffer.c 5 Feb 2015 12:59:57 -0000 1.29 +++ buffer.c 10 Jul 2015 06:59:05 -0000 @@ -420,16 +420,17 @@ evbuffer_drain(struct evbuffer *buf, siz #define EVBUFFER_MAX_READ 4096 -int -evbuffer_read(struct evbuffer *buf, int fd, int howmuch) +ssize_t +evbuffer_read(struct evbuffer *buf, int fd, size_t howmuch) { u_char *p; size_t oldoff = buf->off; - int n = EVBUFFER_MAX_READ; + int avail = EVBUFFER_MAX_READ; + ssize_t n; - if (ioctl(fd, FIONREAD, &n) == -1 || n <= 0) { - n = EVBUFFER_MAX_READ; - } else if (n > EVBUFFER_MAX_READ && n > howmuch) { + if (ioctl(fd, FIONREAD, &avail) == -1 || avail <= 0) { + avail = EVBUFFER_MAX_READ; + } else if (avail > EVBUFFER_MAX_READ && (size_t)avail > howmuch) { /* * It's possible that a lot of data is available for * reading. We do not want to exhaust resources @@ -437,13 +438,13 @@ evbuffer_read(struct evbuffer *buf, int * about it. If the reader does not tell us how much * data we should read, we artifically limit it. */ - if ((size_t)n > buf->totallen << 2) - n = buf->totallen << 2; - if (n < EVBUFFER_MAX_READ) - n = EVBUFFER_MAX_READ; + if (avail > buf->totallen << 2) + avail = buf->totallen << 2; + if (avail < EVBUFFER_MAX_READ) + avail = EVBUFFER_MAX_READ; } - if (howmuch < 0 || howmuch > n) - howmuch = n; + if (howmuch == SIZE_MAX || howmuch > avail) + howmuch = avail; /* If we don't have FIONREAD, we might waste some space here */ if (evbuffer_expand(buf, howmuch) == -1) @@ -467,10 +468,10 @@ evbuffer_read(struct evbuffer *buf, int return (n); } -int +ssize_t evbuffer_write(struct evbuffer *buffer, int fd) { - int n; + ssize_t n; n = write(fd, buffer->buffer, buffer->off); if (n == -1) Index: evbuffer.c =================================================================== RCS file: /cvs/src/lib/libevent/evbuffer.c,v retrieving revision 1.17 diff -u -p -r1.17 evbuffer.c --- evbuffer.c 30 Oct 2014 16:45:37 -0000 1.17 +++ evbuffer.c 10 Jul 2015 06:59:05 -0000 @@ -81,10 +81,10 @@ static void bufferevent_readcb(int fd, short event, void *arg) { struct bufferevent *bufev = arg; - int res = 0; + ssize_t res; short what = EVBUFFER_READ; + size_t howmuch = SIZE_MAX; size_t len; - int howmuch = -1; if (event == EV_TIMEOUT) { what |= EVBUFFER_TIMEOUT; @@ -96,15 +96,15 @@ bufferevent_readcb(int fd, short event, * read more data than would make us reach the watermark. */ if (bufev->wm_read.high != 0) { - howmuch = bufev->wm_read.high - EVBUFFER_LENGTH(bufev->input); /* we might have lowered the watermark, stop reading */ - if (howmuch <= 0) { + if (bufev->wm_read.high <= EVBUFFER_LENGTH(bufev->input)) { struct evbuffer *buf = bufev->input; event_del(&bufev->ev_read); evbuffer_setcb(buf, bufferevent_read_pressure_cb, bufev); return; } + howmuch = bufev->wm_read.high - EVBUFFER_LENGTH(bufev->input); } res = evbuffer_read(bufev->input, fd, howmuch); @@ -113,13 +113,13 @@ bufferevent_readcb(int fd, short event, goto reschedule; /* error case */ what |= EVBUFFER_ERROR; - } else if (res == 0) { + goto error; + } + if (res == 0) { /* eof case */ what |= EVBUFFER_EOF; - } - - if (res <= 0) goto error; + } bufferevent_add(&bufev->ev_read, bufev->timeout_read); @@ -152,7 +152,7 @@ static void bufferevent_writecb(int fd, short event, void *arg) { struct bufferevent *bufev = arg; - int res = 0; + ssize_t res; short what = EVBUFFER_WRITE; if (event == EV_TIMEOUT) { Index: evbuffer_new.3 =================================================================== RCS file: /cvs/src/lib/libevent/evbuffer_new.3,v retrieving revision 1.12 diff -u -p -r1.12 evbuffer_new.3 --- evbuffer_new.3 21 Nov 2014 06:59:00 -0000 1.12 +++ evbuffer_new.3 10 Jul 2015 06:59:05 -0000 @@ -60,10 +60,10 @@ .Fn "evbuffer_drain" "struct evbuffer *buf" "size_t size" .Ft int .Fn "evbuffer_remove" "struct evbuffer *buf" "void *data" "size_t datlen" -.Ft int +.Ft ssize_t .Fn "evbuffer_write" "struct evbuffer *buf" "int fd" -.Ft int -.Fn "evbuffer_read" "struct evbuffer *buf" "int fd" "int size" +.Ft ssize_t +.Fn "evbuffer_read" "struct evbuffer *buf" "int fd" "size_t size" .Ft "u_char *" .Fn "evbuffer_find" "struct evbuffer *buf" "const u_char *data" "size_t size" .Ft "char *" Index: event.h =================================================================== RCS file: /cvs/src/lib/libevent/event.h,v retrieving revision 1.30 diff -u -p -r1.30 event.h --- event.h 5 Jan 2015 23:14:36 -0000 1.30 +++ event.h 10 Jul 2015 06:59:05 -0000 @@ -1122,7 +1122,7 @@ void evbuffer_drain(struct evbuffer *, s @return the number of bytes written, or -1 if an error occurred @see evbuffer_read() */ -int evbuffer_write(struct evbuffer *, int); +ssize_t evbuffer_write(struct evbuffer *, int); /** @@ -1134,7 +1134,7 @@ int evbuffer_write(struct evbuffer *, in @return the number of bytes read, or -1 if an error occurred @see evbuffer_write() */ -int evbuffer_read(struct evbuffer *, int, int); +ssize_t evbuffer_read(struct evbuffer *, int, size_t); /** Index: shlib_version =================================================================== RCS file: /cvs/src/lib/libevent/shlib_version,v retrieving revision 1.10 diff -u -p -r1.10 shlib_version --- shlib_version 3 Apr 2014 11:27:02 -0000 1.10 +++ shlib_version 10 Jul 2015 06:59:05 -0000 @@ -1,2 +1,2 @@ -major=4 -minor=1 +major=5 +minor=0