diff options
Diffstat (limited to 'src/network/ssl')
-rw-r--r-- | src/network/ssl/qsslsocket.cpp | 23 | ||||
-rw-r--r-- | src/network/ssl/qsslsocket_p.h | 1 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/network/ssl/qsslsocket.cpp b/src/network/ssl/qsslsocket.cpp index 508d300d42..b1076ebd68 100644 --- a/src/network/ssl/qsslsocket.cpp +++ b/src/network/ssl/qsslsocket.cpp @@ -2404,6 +2404,29 @@ bool QSslSocketPrivate::isPaused() const return paused; } +bool QSslSocketPrivate::bind(const QHostAddress &address, quint16 port, QAbstractSocket::BindMode mode) +{ + // this function is called from QAbstractSocket::bind + if (!initialized) + init(); + initialized = false; + +#ifdef QSSLSOCKET_DEBUG + qCDebug(lcSsl) << "QSslSocket::bind(" << address << ',' << port << ',' << mode << ')'; +#endif + if (!plainSocket) { +#ifdef QSSLSOCKET_DEBUG + qCDebug(lcSsl) << "\tcreating internal plain socket"; +#endif + createPlainSocket(QIODevice::ReadWrite); + } + bool ret = plainSocket->bind(address, port, mode); + localPort = plainSocket->localPort(); + localAddress = plainSocket->localAddress(); + cachedSocketDescriptor = plainSocket->socketDescriptor(); + return ret; +} + /*! \internal */ diff --git a/src/network/ssl/qsslsocket_p.h b/src/network/ssl/qsslsocket_p.h index b110d65f9a..5f726f2371 100644 --- a/src/network/ssl/qsslsocket_p.h +++ b/src/network/ssl/qsslsocket_p.h @@ -172,6 +172,7 @@ public: static void checkSettingSslContext(QSslSocket*, QSharedPointer<QSslContext>); static QSharedPointer<QSslContext> sslContext(QSslSocket *socket); bool isPaused() const; + bool bind(const QHostAddress &address, quint16, QAbstractSocket::BindMode) Q_DECL_OVERRIDE; void _q_connectedSlot(); void _q_hostFoundSlot(); void _q_disconnectedSlot(); |