diff --git a/buffer.c b/buffer.c index 744c8a9e..98f5a0b2 100644 --- a/buffer.c +++ b/buffer.c @@ -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