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?