summaryrefslogtreecommitdiff
path: root/bufferevent_sock.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2009-12-24 17:47:14 -0500
committerNick Mathewson <nickm@torproject.org>2009-12-28 16:59:07 -0500
commit82743794d37b0ddece31c0d4f637d2f7d0896f2d (patch)
tree9735ddf957fc1f9dd22f2196844000b008dcf62a /bufferevent_sock.c
parentf0c0124e603945f4693ae1457c7b9ef2b08689bf (diff)
downloadlibevent-82743794d37b0ddece31c0d4f637d2f7d0896f2d.tar.gz
Do not make bufferevent_setfd implicitly disable EV_READ and EV_WRITE.
This obviates the need for BEV_SUSPEND_CONNECTING, and good riddance.
Diffstat (limited to 'bufferevent_sock.c')
-rw-r--r--bufferevent_sock.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/bufferevent_sock.c b/bufferevent_sock.c
index f53689ee..d1b5792a 100644
--- a/bufferevent_sock.c
+++ b/bufferevent_sock.c
@@ -222,7 +222,6 @@ bufferevent_writecb(evutil_socket_t fd, short event, void *arg)
goto done;
} else {
connected = 1;
- bufferevent_unsuspend_read(bufev, BEV_SUSPEND_CONNECTING);
#ifdef WIN32
if (BEV_IS_ASYNC(bufev)) {
event_del(&bufev->ev_write);
@@ -408,11 +407,7 @@ freesock:
if (ownfd)
EVUTIL_CLOSESOCKET(fd);
/* do something about the error? */
-
done:
- if (result == 0)
- bufferevent_suspend_read(bev, BEV_SUSPEND_CONNECTING);
-
_bufferevent_decref_and_unlock(bev);
return result;
}
@@ -575,6 +570,10 @@ be_socket_setfd(struct bufferevent *bufev, evutil_socket_t fd)
EV_READ|EV_PERSIST, bufferevent_readcb, bufev);
event_assign(&bufev->ev_write, bufev->ev_base, fd,
EV_WRITE|EV_PERSIST, bufferevent_writecb, bufev);
+
+ if (fd >= 0)
+ bufferevent_enable(bufev, bufev->enabled);
+
BEV_UNLOCK(bufev);
}