]> granicus.if.org Git - libevent/commitdiff
Fix a deadlock: there were some LOCKs that should have been UNLOCKs. Resolves bug...
authorNick Mathewson <nickm@torproject.org>
Wed, 20 May 2009 12:24:13 +0000 (12:24 +0000)
committerNick Mathewson <nickm@torproject.org>
Wed, 20 May 2009 12:24:13 +0000 (12:24 +0000)
svn:r1298

ChangeLog
bufferevent.c

index 4b641c0bd6ff7c1bbe5962abf25ffb54104e32a2..684f7bd2ab11ae8306f571ce95ab90490a6eb7eb 100644 (file)
--- 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:
index d569aeaa94078dcca6152d26d96c24362bee861d..81c5e02c332f33305cc21a77d5d776d745d0d182 100644 (file)
@@ -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