7

CAsyncSocket crashes my application if I delete the CAsyncSocket after a call to Connect, but before the OnConnect callback has been called. ASSERT(pSocket != NULL) fails in CAsyncSocket::DoCallBack and the application exits.

In other words, if I create a CAsyncSocket, try to connect it to a server, and then kill it before that connection either succeeds or fails, I have problems. I can avoid this particular crash by implementing OnConnect and setting a flag which indicates that the connection attempt completed. If the flag is false I know it's not safe to delete.

Are there other cases I need to check for before I delete the object? Is there a single way to check if it's safe? Or do I need to implement all of the callbacks for any operation I might initiate (OnReceive, OnSend, OnConnect ) and ensure those callbacks have been called?

Cel Skeggs
  • 1,827
  • 21
  • 38
morgancodes
  • 25,055
  • 38
  • 135
  • 187