From: Nick Mathewson Date: Wed, 20 May 2009 12:24:13 +0000 (+0000) Subject: Fix a deadlock: there were some LOCKs that should have been UNLOCKs. Resolves bug... X-Git-Tag: release-2.0.3-alpha~221 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=594842970ead07fd3e100234c908744563d0f734;p=libevent Fix a deadlock: there were some LOCKs that should have been UNLOCKs. Resolves bug 2794244 svn:r1298 --- diff --git a/ChangeLog b/ChangeLog index 4b641c0b..684f7bd2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -30,6 +30,7 @@ Changes in 2.0.2-alpha: o Change the interface of evbuffer_add_reference so that the cleanup callback gets more information o Revise the new evbuffer_reserve_space/evbuffer_commit_space() interfaces so that you can use them without causing extraneous copies or leaving gaps in the evbuffer. o Add a new evbuffer_peek() interface to inspect data in an evbuffer without removing it. + o Fix a deadlock when suspending reads in a bufferevent due to a full buffer. (Spotted by Joachim Bauch.) Changes in 2.0.1-alpha: diff --git a/bufferevent.c b/bufferevent.c index d569aeaa..81c5e02c 100644 --- a/bufferevent.c +++ b/bufferevent.c @@ -69,7 +69,7 @@ bufferevent_wm_suspend_read(struct bufferevent *bufev) bufev->be_ops->disable(bufev, EV_READ); bufev_private->read_suspended = 1; } - BEV_LOCK(bufev); + BEV_UNLOCK(bufev); } void @@ -84,7 +84,7 @@ bufferevent_wm_unsuspend_read(struct bufferevent *bufev) if (bufev->enabled & EV_READ) bufev->be_ops->enable(bufev, EV_READ); } - BEV_LOCK(bufev); + BEV_UNLOCK(bufev); } /* Callback to implement watermarks on the input buffer. Only enabled