o Try to compile better with MSVC: patches from Brodie Thiesfield
o New evconnlistener_get_fd function to expose a listener's associated socket.
o Expose an ev_socklen_t type for consistent use across platforms.
+ o Make bufferevenr_socket_connect() work when the original fd was -1.
+ o Fix a bug in bufferevent_socket_connect() when the connection succeeds too quickly.
Changes in 2.0.2-alpha:
o Add a new flag to bufferevents to make all callbacks automatically deferred.
evutil_socket_t fd;
int r;
int result=-1;
+ int ownfd = 0;
_bufferevent_incref_and_lock(bev);
goto done;
fd = bufferevent_getfd(bev);
+ if (fd < 0) {
+ fd = socket(sa->sa_family, SOCK_STREAM, 0);
+ if (fd < 0)
+ goto done;
+ if (evutil_make_socket_nonblocking(fd)<0)
+ goto done;
+ ownfd = 1;
+ }
r = evutil_socket_connect(&fd, sa, socklen);
if (r < 0) {
_bufferevent_run_eventcb(bev, BEV_EVENT_ERROR);
+ if (ownfd)
+ EVUTIL_CLOSESOCKET(fd);
/* do something about the error? */
goto done;
}
}
} else {
/* The connect succeeded already. How odd. */
+ result = 0;
_bufferevent_run_eventcb(bev, BEV_EVENT_CONNECTED);
}