wxTCPConnection::~wxTCPConnection ()
{
Disconnect();
- wxDELETE(m_codeci);
- wxDELETE(m_codeco);
- wxDELETE(m_sockstrm);
if (m_sock)
{
m_sock->SetClientData(NULL);
m_sock->Destroy();
}
+
+ /* Delete after destroy */
+ wxDELETE(m_codeci);
+ wxDELETE(m_codeco);
+ wxDELETE(m_sockstrm);
}
void wxTCPConnection::Compress(bool WXUNUSED(on))
return true;
// Send the the disconnect message to the peer.
m_codeco->Write8(IPC_DISCONNECT);
- m_sock->Notify(false);
- m_sock->Close();
+
+ if ( m_sock )
+ {
+ m_sock->Notify(false);
+ m_sock->Close();
+ }
+
SetConnected(false);
return true;
size_t s;
s = m_codeci->Read32();
+
wxChar *data = GetBufferAtLeast( s );
wxASSERT_MSG(data != NULL,
_T("Buffer too small in wxTCPConnection::Request") );
}
}
-bool wxTCPConnection::Poke (const wxString& item, wxChar *data, int size, wxIPCFormat format)
+bool wxTCPConnection::Poke (const wxString& item, const wxChar *data, int size, wxIPCFormat format)
{
if (!m_sock->IsConnected())
return false;
// Calls that SERVER can make
bool wxTCPConnection::Advise (const wxString& item,
- wxChar *data, int size, wxIPCFormat format)
+ const wxChar *data, int size, wxIPCFormat format)
{
if (!m_sock->IsConnected())
return false;
void wxTCPEventHandler::Client_OnRequest(wxSocketEvent &event)
{
wxSocketBase *sock = event.GetSocket();
+ if (!sock) { /* No socket, no glory */
+ return ;
+ }
wxSocketNotify evt = event.GetSocketEvent();
wxTCPConnection *connection = (wxTCPConnection *)(sock->GetClientData());
format = (wxIPCFormat)codeci->Read8();
size = codeci->Read32();
+
data = connection->GetBufferAtLeast( size );
wxASSERT_MSG(data != NULL,
_T("Buffer too small in wxTCPEventHandler::Client_OnRequest") );
format = (wxIPCFormat)codeci->Read8();
int user_size = -1;
- wxChar *user_data = connection->OnRequest (topic_name, item, &user_size, format);
+ const wxChar *user_data = connection->OnRequest (topic_name, item, &user_size, format);
if (user_data)
{
void wxTCPEventHandler::Server_OnRequest(wxSocketEvent &event)
{
wxSocketServer *server = (wxSocketServer *) event.GetSocket();
+ if (!server) { /* No server, Then exit */
+ return ;
+ }
wxTCPServer *ipcserv = (wxTCPServer *) server->GetClientData();
// This socket is being deleted; skip this event
// Accept the connection, getting a new socket
wxSocketBase *sock = server->Accept();
+ if (!sock) { /* No socket, no glory */
+ return ;
+ }
if (!sock->Ok())
{
sock->Destroy();