#if defined(__UNIX__) && !defined(__WINDOWS__) && !defined(__WINE__)
// under Unix, if the server name looks like a path, create a AF_UNIX
// socket instead of AF_INET one
- if ( serverName.Find(_T('/')) != wxNOT_FOUND )
+ if ( serverName.Find(wxT('/')) != wxNOT_FOUND )
{
wxUNIXaddress *addr = new wxUNIXaddress;
addr->Filename(serverName);
if (connection)
{
- if (connection->IsKindOf(CLASSINFO(wxTCPConnection)))
+ if (wxDynamicCast(connection, wxTCPConnection))
{
connection->m_topic = topic;
connection->m_sock = client;
delete addr;
- if (!m_server->Ok())
+ if (!m_server->IsOk())
{
m_server->Destroy();
m_server = NULL;
{
if ( remove(m_filename.fn_str()) != 0 )
{
- wxLogDebug(_T("Stale AF_UNIX file '%s' left."), m_filename.c_str());
+ wxLogDebug(wxT("Stale AF_UNIX file '%s' left."), m_filename.c_str());
}
}
#endif // __UNIX_LIKE__
connection->m_sock->Notify(false);
connection->m_sock->Close();
+ // don't leave references to this soon-to-be-dangling connection in the
+ // socket as it won't be destroyed immediately as its destruction will be
+ // delayed in case there are more events pending for it
+ connection->m_sock->SetClientData(NULL);
+
connection->SetConnected(false);
connection->OnDisconnect();
}
wxSocketBase *sock = server->Accept();
if (!sock)
return;
- if (!sock->Ok())
+ if (!sock->IsOk())
{
sock->Destroy();
return;
if (new_connection)
{
- if (new_connection->IsKindOf(CLASSINFO(wxTCPConnection)))
+ if (wxDynamicCast(new_connection, wxTCPConnection))
{
// Acknowledge success
out.Write8(IPC_CONNECT);