|
From: Nick M. <ni...@us...> - 2010-02-18 19:51:17
|
Author: Nick Mathewson <ni...@to...>
Date: Thu, 18 Feb 2010 14:50:44 -0500
Subject: When connect() succeeds immediately, don't invoke the callback immediately.
Commit: 7515de91fe6c721d304d06cedc8af8d334916eaf
We need this to get unit tests to pass on freebsd.
---
bufferevent_sock.c | 13 +++++--------
1 files changed, 5 insertions(+), 8 deletions(-)
diff --git a/bufferevent_sock.c b/bufferevent_sock.c
index 36893a7..7ce4266 100644
--- a/bufferevent_sock.c
+++ b/bufferevent_sock.c
@@ -276,8 +276,9 @@ bufferevent_writecb(evutil_socket_t fd, short event, void *arg)
* low watermark.
*/
if ((res || !connected) &&
- evbuffer_get_length(bufev->output) <= bufev->wm_write.low)
+ evbuffer_get_length(bufev->output) <= bufev->wm_write.low) {
_bufferevent_run_writecb(bufev);
+ }
goto done;
@@ -390,14 +391,10 @@ bufferevent_socket_connect(struct bufferevent *bev,
goto done;
}
} else {
- /* The connect succeeded already. How odd. */
+ /* The connect succeeded already. How very BSD of it. */
result = 0;
- /* XXXX The strcmp here is a stupid hack to prevent delivering
- * a CONNECTED to an SSL bufferevent before its SSL is done
- * negotiating. Really we should find some way to do this that
- * isn't an explicit type-check. */
- if (strcmp(bev->be_ops->type, "ssl"))
- _bufferevent_run_eventcb(bev, BEV_EVENT_CONNECTED);
+ bufev_p->connecting = 1;
+ event_active(&bev->ev_write, EV_WRITE, 1);
}
goto done;
--
1.6.3
|