]> granicus.if.org Git - libevent/commitdiff
Make overlapped reads result in evbuffer callbacks getting invoked
authorNick Mathewson <nickm@torproject.org>
Thu, 18 Aug 2011 16:35:27 +0000 (12:35 -0400)
committerNick Mathewson <nickm@torproject.org>
Thu, 18 Aug 2011 17:15:46 +0000 (13:15 -0400)
buffer.c
buffer_iocp.c
evbuffer-internal.h

index 744c8a9edebd1069de1dd924bdf3cacb6f438c8e..98f5a0b2f4364733f119c4ec524803d1b57f18f1 100644 (file)
--- 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)) {
index f3f96f4408dd1327de1e38b79af9e083451f81fe..2d3a1b17c5d5f0938f66ba18e7f2a8a6e0c43ec6 100644 (file)
@@ -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);
 }
index 7fc8b9147ad1f0c78fee4576c9a6d95575354b53..5879f874d7bbe986f0a2e3fbfe422ef1288ddc53 100644 (file)
@@ -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