#6178 Fix compiling error for adding IPv6 for secure socket

This commit is contained in:
Jerry (Xinyu Hou)
2018-03-20 16:05:30 +00:00
parent e01acb30b6
commit fa82f5cdf3
8 changed files with 384 additions and 15 deletions

View File

@@ -147,7 +147,7 @@ Client::connect()
}
// create the socket
IDataSocket* socket = m_socketFactory->create(ARCH->getAddrFamily(m_serverAddress.getAddress()));
IDataSocket* socket = m_socketFactory->create(m_useSecureNetwork, ARCH->getAddrFamily(m_serverAddress.getAddress()));
m_socket = dynamic_cast<TCPSocket*>(socket);
// filter socket messages, including a packetizing filter

View File

@@ -54,7 +54,7 @@ IpcServer::IpcServer(IEventQueue* events, SocketMultiplexer* socketMultiplexer,
void
IpcServer::init()
{
m_socket = new TCPListenSocket(m_events, m_socketMultiplexer);
m_socket = new TCPListenSocket(m_events, m_socketMultiplexer, ARCH->getAddrFamily(m_address.getAddress()));
m_clientsMutex = ARCH->newMutex();
m_address.resolve();

View File

@@ -35,10 +35,10 @@ public:
//@{
//! Create data socket
virtual IDataSocket* create(IArchNetwork::EAddressFamily family = IArchNetwork::kINET) const = 0;
virtual IDataSocket* create(bool secure, IArchNetwork::EAddressFamily family = IArchNetwork::kINET) const = 0;
//! Create listen socket
virtual IListenSocket* createListen(IArchNetwork::EAddressFamily family = IArchNetwork::kINET) const = 0;
virtual IListenSocket* createListen(bool secure, IArchNetwork::EAddressFamily family = IArchNetwork::kINET) const = 0;
//@}
};

View File

@@ -53,18 +53,16 @@ struct Ssl {
SSL* m_ssl;
};
SecureSocket::SecureSocket(
IEventQueue* events,
SocketMultiplexer* socketMultiplexer) :
TCPSocket(events, socketMultiplexer),
SecureSocket::SecureSocket(IEventQueue* events,
SocketMultiplexer* socketMultiplexer, IArchNetwork::EAddressFamily family) :
TCPSocket(events, socketMultiplexer, family),
m_ssl(nullptr),
m_secureReady(false),
m_fatal(false)
{
}
SecureSocket::SecureSocket(
IEventQueue* events,
SecureSocket::SecureSocket(IEventQueue* events,
SocketMultiplexer* socketMultiplexer,
ArchSocket socket) :
TCPSocket(events, socketMultiplexer, socket),

View File

@@ -32,7 +32,7 @@ A secure socket using SSL.
*/
class SecureSocket : public TCPSocket {
public:
SecureSocket(IEventQueue* events, SocketMultiplexer* socketMultiplexer);
SecureSocket(IEventQueue* events, SocketMultiplexer* socketMultiplexer, IArchNetwork::EAddressFamily family);
SecureSocket(IEventQueue* events,
SocketMultiplexer* socketMultiplexer,
ArchSocket socket);

View File

@@ -41,7 +41,7 @@ TCPSocketFactory::~TCPSocketFactory()
}
IDataSocket*
TCPSocketFactory::create(IArchNetwork::EAddressFamily family) const
TCPSocketFactory::create(bool secure, IArchNetwork::EAddressFamily family) const
{
if (secure) {
SecureSocket* secureSocket = new SecureSocket(m_events, m_socketMultiplexer, family);
@@ -54,7 +54,7 @@ TCPSocketFactory::create(IArchNetwork::EAddressFamily family) const
}
IListenSocket*
TCPSocketFactory::createListen(IArchNetwork::EAddressFamily family) const
TCPSocketFactory::createListen(bool secure, IArchNetwork::EAddressFamily family) const
{
IListenSocket* socket = NULL;
if (secure) {

View File

@@ -32,9 +32,9 @@ public:
// ISocketFactory overrides
virtual IDataSocket*
create(IArchNetwork::EAddressFamily family = IArchNetwork::kINET) const;
create(bool secure, IArchNetwork::EAddressFamily family = IArchNetwork::kINET) const;
virtual IListenSocket*
createListen(IArchNetwork::EAddressFamily family = IArchNetwork::kINET) const;
createListen(bool secure, IArchNetwork::EAddressFamily family = IArchNetwork::kINET) const;
private:
IEventQueue* m_events;