Hi Nick, > >> So, I've managed to poke around just a little since sending the > >> example code and not really found anything interesting as of yet but > had > >> an > >> evil thought. I started wondering about the "shutdown" function being > >> unreliable with IOCP from your information. I can't say for sure but I > >> started thinking about it and have a guess as to the problem which I > will > >> be > >> > >> This certainly seems like an evil stupid thing IOCP could be > doing > >> here. :( > > > > Nope, wasn't this. Can't even get EOF using the > WSASendDisconnect > > calls, something is definitely wrong at a lower level. Will dig into it > > more as I find time. > > Were you able to try DisconnectEx, or is that our next best bet?
Got the fix. Fricken IOCP strangness bites again. You just have to insert a call to: int err = setsockopt( fd, SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT, (char *)&listener, sizeof(listener) ); The fd is the socket you accepted from the call to AcceptEx and the listener is of course the listener socket. I did this in the listener callback and don't know exactly where in libevent proper it should be added. If you point me in the correct direction I'll post a patch if you want, or you can drop it in there pretty easy. With this fix, shutdown and WSASendShutdown worked fine and I was able to get clean disconnects as desired. KB *********************************************************************** To unsubscribe, send an e-mail to majord...@freehaven.net with unsubscribe libevent-users in the body.