diff options
author | Nick Mathewson <nickm@torproject.org> | 2011-08-18 12:35:27 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2011-08-18 13:15:46 -0400 |
commit | 6acfbdd83ab0ecd435928db4eafac862209080ea (patch) | |
tree | 7112b3cd34813c09d3759aeaeddcc5aeece27258 | |
parent | 495c227f59093543dcc8f72e699e146ec9f82d10 (diff) | |
download | libevent-6acfbdd83ab0ecd435928db4eafac862209080ea.tar.gz |
Make overlapped reads result in evbuffer callbacks getting invoked
-rw-r--r-- | buffer.c | 2 | ||||
-rw-r--r-- | buffer_iocp.c | 3 | ||||
-rw-r--r-- | evbuffer-internal.h | 2 |
3 files changed, 6 insertions, 1 deletions
@@ -444,7 +444,7 @@ evbuffer_run_callbacks(struct evbuffer *buffer, int running_deferred) } } -static inline void +void evbuffer_invoke_callbacks(struct evbuffer *buffer) { if (TAILQ_EMPTY(&buffer->callbacks)) { diff --git a/buffer_iocp.c b/buffer_iocp.c index f3f96f44..2d3a1b17 100644 --- a/buffer_iocp.c +++ b/buffer_iocp.c @@ -126,6 +126,9 @@ evbuffer_commit_read(struct evbuffer *evbuf, ev_ssize_t nBytes) buf->read_in_progress = 0; evbuf->total_len += nBytes; + evbuf->n_add_for_cb += nBytes; + + evbuffer_invoke_callbacks(evbuf); _evbuffer_decref_and_unlock(evbuf); } diff --git a/evbuffer-internal.h b/evbuffer-internal.h index 7fc8b914..5879f874 100644 --- a/evbuffer-internal.h +++ b/evbuffer-internal.h @@ -270,6 +270,8 @@ int _evbuffer_read_setup_vecs(struct evbuffer *buf, ev_ssize_t howmuch, /** Set the parent bufferevent object for buf to bev */ void evbuffer_set_parent(struct evbuffer *buf, struct bufferevent *bev); +void evbuffer_invoke_callbacks(struct evbuffer *buf); + #ifdef __cplusplus } #endif |