Permalink
Browse files
#5680 Stop deleting socket twice if it's been adopted by PacketStream
- Loading branch information...
|
|
@@ -41,14 +41,7 @@ class IListenSocket : public ISocket { |
|
|
*/
|
|
|
virtual IDataSocket*
|
|
|
accept() = 0;
|
|
|
-
|
|
|
- //! Delete connection socket
|
|
|
- /*!
|
|
|
- This is used when the socket was created but not adopted by a client
|
|
|
- proxy.
|
|
|
- */
|
|
|
- virtual void deleteSocket(void*) = 0;
|
|
|
-
|
|
|
+
|
|
|
//@}
|
|
|
|
|
|
// ISocket overrides
|
|
|
|
|
|
@@ -93,14 +93,3 @@ SecureListenSocket::accept() |
|
|
throw ex;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-void
|
|
|
-SecureListenSocket::deleteSocket(void* socket)
|
|
|
-{
|
|
|
- SecureSocketSet::iterator it;
|
|
|
- it = m_secureSocketSet.find((IDataSocket*)socket);
|
|
|
- if (it != m_secureSocketSet.end()) {
|
|
|
- delete *it;
|
|
|
- m_secureSocketSet.erase(it);
|
|
|
- }
|
|
|
-}
|
|
|
@@ -33,7 +33,6 @@ class SecureListenSocket : public TCPListenSocket{ |
|
|
// IListenSocket overrides
|
|
|
virtual IDataSocket*
|
|
|
accept();
|
|
|
- void deleteSocket(void*);
|
|
|
|
|
|
private:
|
|
|
typedef std::set<IDataSocket*> SecureSocketSet;
|
|
|
|
|
|
@@ -43,7 +43,6 @@ class TCPListenSocket : public IListenSocket { |
|
|
// IListenSocket overrides
|
|
|
virtual IDataSocket*
|
|
|
accept();
|
|
|
- virtual void deleteSocket(void*) { }
|
|
|
|
|
|
protected:
|
|
|
void setListeningJob();
|
|
|
|
|
|
@@ -106,12 +106,6 @@ ClientListener::setServer(Server* server) |
|
|
m_server = server;
|
|
|
}
|
|
|
|
|
|
-void
|
|
|
-ClientListener::deleteSocket(void* socket)
|
|
|
-{
|
|
|
- m_listen->deleteSocket(socket);
|
|
|
-}
|
|
|
-
|
|
|
ClientProxy*
|
|
|
ClientListener::getNextClient()
|
|
|
{
|
|
|
@@ -213,10 +207,6 @@ ClientListener::handleUnknownClient(const Event&, void* vclient) |
|
|
}
|
|
|
|
|
|
delete unknownClient;
|
|
|
-
|
|
|
- if (m_useSecureNetwork && !handshakeOk) {
|
|
|
- deleteSocket(socket);
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
void
|
|
|
|
|
|
@@ -48,8 +48,6 @@ class ClientListener { |
|
|
|
|
|
//@}
|
|
|
|
|
|
- void deleteSocket(void* socket);
|
|
|
-
|
|
|
//! @name accessors
|
|
|
//@{
|
|
|
|
|
|
|
|
|
@@ -1378,10 +1378,7 @@ Server::handleClientDisconnected(const Event&, void* vclient) |
|
|
removeActiveClient(client);
|
|
|
removeOldClient(client);
|
|
|
|
|
|
- PacketStreamFilter* streamFileter = dynamic_cast<PacketStreamFilter*>(client->getStream());
|
|
|
- TCPSocket* socket = dynamic_cast<TCPSocket*>(streamFileter->getStream());
|
|
|
delete client;
|
|
|
- m_clientListener->deleteSocket(socket);
|
|
|
}
|
|
|
|
|
|
void
|
|
|
@@ -1391,10 +1388,8 @@ Server::handleClientCloseTimeout(const Event&, void* vclient) |
|
|
BaseClientProxy* client = static_cast<BaseClientProxy*>(vclient);
|
|
|
LOG((CLOG_NOTE "forced disconnection of client \"%s\"", getName(client).c_str()));
|
|
|
removeOldClient(client);
|
|
|
- PacketStreamFilter* streamFileter = dynamic_cast<PacketStreamFilter*>(client->getStream());
|
|
|
- TCPSocket* socket = dynamic_cast<TCPSocket*>(streamFileter->getStream());
|
|
|
+
|
|
|
delete client;
|
|
|
- m_clientListener->deleteSocket(socket);
|
|
|
}
|
|
|
|
|
|
void
|
|
|
|
0 comments on commit
dc4beba