]> granicus.if.org Git - libevent/commitdiff
Speed up invoke_callbacks on evbuffers when there are no callbacks
authorMark Ellzey <mark.thomas@mandiant.com>
Mon, 4 Jul 2011 15:47:24 +0000 (11:47 -0400)
committerNick Mathewson <nickm@torproject.org>
Mon, 4 Jul 2011 15:47:24 +0000 (11:47 -0400)
This fixes a performance regression against 1.4

buffer.c

index ee600cac3c7f49702b6045c99f51afd815801dba..e47a51f813b001ab2d056af08bdb1edd1f445ae3 100644 (file)
--- a/buffer.c
+++ b/buffer.c
@@ -447,6 +447,11 @@ evbuffer_run_callbacks(struct evbuffer *buffer, int running_deferred)
 static inline void
 evbuffer_invoke_callbacks(struct evbuffer *buffer)
 {
+       if (TAILQ_EMPTY(&buffer->callbacks)) {
+               buffer->n_add_for_cb = buffer->n_del_for_cb = 0;
+               return;
+       }
+
        if (buffer->deferred_cbs) {
                if (buffer->deferred.queued)
                        return;