X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libevent%2Fbufferevent_async.c;h=76a161623bf708850ebca374a43b0d6d061a9c07;hb=75cceac7017a24e33d65f917155ad0d8b15ef178;hp=b7284fda6cb2dbeab9fcfcdb5b68a14445e3a02b;hpb=9c8a21a5a13808bab520bd257b3d0a6fe16c6b07;p=netatalk.git diff --git a/libevent/bufferevent_async.c b/libevent/bufferevent_async.c index b7284fda..76a16162 100644 --- a/libevent/bufferevent_async.c +++ b/libevent/bufferevent_async.c @@ -63,6 +63,11 @@ #include "util-internal.h" #include "iocp-internal.h" +#ifndef SO_UPDATE_CONNECT_CONTEXT +/* Mingw is sometimes missing this */ +#define SO_UPDATE_CONNECT_CONTEXT 0x7010 +#endif + /* prototypes */ static int be_async_enable(struct bufferevent *, short); static int be_async_disable(struct bufferevent *, short); @@ -403,11 +408,15 @@ connect_complete(struct event_overlapped *eo, ev_uintptr_t key, { struct bufferevent_async *bev_a = upcast_connect(eo); struct bufferevent *bev = &bev_a->bev.bev; + evutil_socket_t sock; BEV_LOCK(bev); EVUTIL_ASSERT(bev_a->bev.connecting); bev_a->bev.connecting = 0; + sock = _evbuffer_overlapped_get_fd(bev_a->bev.bev.input); + /* XXXX Handle error? */ + setsockopt(sock, SOL_SOCKET, SO_UPDATE_CONNECT_CONTEXT, NULL, 0); if (ok) bufferevent_async_set_connected(bev);