summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2011-08-18 12:35:27 -0400
committerNick Mathewson <nickm@torproject.org>2011-08-18 13:15:46 -0400
commit6acfbdd83ab0ecd435928db4eafac862209080ea (patch)
tree7112b3cd34813c09d3759aeaeddcc5aeece27258
parent495c227f59093543dcc8f72e699e146ec9f82d10 (diff)
downloadlibevent-6acfbdd83ab0ecd435928db4eafac862209080ea.tar.gz
Make overlapped reads result in evbuffer callbacks getting invoked
-rw-r--r--buffer.c2
-rw-r--r--buffer_iocp.c3
-rw-r--r--evbuffer-internal.h2
3 files changed, 6 insertions, 1 deletions
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