Note a place we might do better about lock releasing.

svn:r1252
This commit is contained in:
Nick Mathewson 2009-04-29 20:48:43 +00:00
parent 50e20fe076
commit 24607a397c
2 changed files with 4 additions and 0 deletions

View File

@ -370,6 +370,8 @@ evbuffer_deferred_callback(struct deferred_cb *cb, void *arg)
{ {
struct evbuffer *buffer = arg; struct evbuffer *buffer = arg;
/* XXXX It would be better to run these callbacks without holding the
* lock */
EVBUFFER_LOCK(buffer, EVTHREAD_WRITE); EVBUFFER_LOCK(buffer, EVTHREAD_WRITE);
evbuffer_run_callbacks(buffer); evbuffer_run_callbacks(buffer);
_evbuffer_decref_and_unlock(buffer); _evbuffer_decref_and_unlock(buffer);

View File

@ -119,6 +119,8 @@ bufferevent_run_deferred_callbacks(struct deferred_cb *_, void *arg)
struct bufferevent_private *bufev_private = arg; struct bufferevent_private *bufev_private = arg;
struct bufferevent *bufev = &bufev_private->bev; struct bufferevent *bufev = &bufev_private->bev;
/* XXXX It would be better to run these without holding the
* bufferevent lock */
BEV_LOCK(bufev); BEV_LOCK(bufev);
if (bufev_private->readcb_pending && bufev->readcb) { if (bufev_private->readcb_pending && bufev->readcb) {
bufev_private->readcb_pending = 0; bufev_private->readcb_pending = 0;