Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
QSslServer Class Reference

\inmodule QtNetwork More...

#include <qsslserver.h>

+ Inheritance diagram for QSslServer:
+ Collaboration diagram for QSslServer:

Signals

void sslErrors (QSslSocket *socket, const QList< QSslError > &errors)
 QSslServer emits this signal after the SSL handshake to indicate that one or more errors have occurred while establishing the identity of the peer.
 
void peerVerifyError (QSslSocket *socket, const QSslError &error)
 QSslServer can emit this signal several times during the SSL handshake, before encryption has been established, to indicate that an error has occurred while establishing the identity of the peer.
 
void errorOccurred (QSslSocket *socket, QAbstractSocket::SocketError error)
 This signal is emitted after an error occurred during handshake.
 
void preSharedKeyAuthenticationRequired (QSslSocket *socket, QSslPreSharedKeyAuthenticator *authenticator)
 QSslServer emits this signal when socket negotiates a PSK ciphersuite, and therefore PSK authentication is then required.
 
void alertSent (QSslSocket *socket, QSsl::AlertLevel level, QSsl::AlertType type, const QString &description)
 QSslServer emits this signal if an alert message was sent from socket to a peer.
 
void alertReceived (QSslSocket *socket, QSsl::AlertLevel level, QSsl::AlertType type, const QString &description)
 QSslServer emits this signal if an alert message was received by the socket from a peer.
 
void handshakeInterruptedOnError (QSslSocket *socket, const QSslError &error)
 QSslServer emits this signal if a certificate verification error was found by socket and if early error reporting was enabled in QSslConfiguration.
 
void startedEncryptionHandshake (QSslSocket *socket)
 This signal is emitted when the client, connected to socket, initiates the TLS handshake.
 
- Signals inherited from QTcpServer
void newConnection ()
 This signal is emitted every time a new connection is available, regardless of whether it has been added to the pending connections queue or not.
 
void pendingConnectionAvailable (QPrivateSignal)
 This signal is emitted every time a new connection has been added to the pending connections queue.
 
void acceptError (QAbstractSocket::SocketError socketError)
 
- Signals inherited from QObject
void destroyed (QObject *=nullptr)
 This signal is emitted immediately before the object obj is destroyed, after any instances of QPointer have been notified, and cannot be blocked.
 
void objectNameChanged (const QString &objectName, QPrivateSignal)
 This signal is emitted after the object's name has been changed.
 

Public Member Functions

 QSslServer (QObject *parent=nullptr)
 Constructs a new QSslServer with the given parent.
 
 ~QSslServer () override
 Destroys the QSslServer.
 
void setSslConfiguration (const QSslConfiguration &sslConfiguration)
 Sets the sslConfiguration to use for all following incoming connections.
 
QSslConfiguration sslConfiguration () const
 Returns the current ssl configuration.
 
void setHandshakeTimeout (int timeout)
 Sets the timeout to use for all incoming handshakes, in milliseconds.
 
int handshakeTimeout () const
 Returns the currently configured handshake timeout.
 
- Public Member Functions inherited from QTcpServer
 QTcpServer (QObject *parent=nullptr)
 Constructs a QTcpServer object.
 
virtual ~QTcpServer ()
 Destroys the QTcpServer object.
 
bool listen (const QHostAddress &address=QHostAddress::Any, quint16 port=0)
 Tells the server to listen for incoming connections on address address and port port.
 
void close ()
 Closes the server.
 
bool isListening () const
 Returns true if the server is currently listening for incoming connections; otherwise returns false.
 
void setMaxPendingConnections (int numConnections)
 Sets the maximum number of pending accepted connections to numConnections.
 
int maxPendingConnections () const
 Returns the maximum number of pending accepted connections.
 
void setListenBacklogSize (int size)
 Sets the backlog queue size of to be accepted connections to size.
 
int listenBacklogSize () const
 Returns the backlog queue size of to be accepted connections.
 
quint16 serverPort () const
 Returns the server's port if the server is listening for connections; otherwise returns 0.
 
QHostAddress serverAddress () const
 Returns the server's address if the server is listening for connections; otherwise returns QHostAddress::Null.
 
qintptr socketDescriptor () const
 Returns the native socket descriptor the server uses to listen for incoming instructions, or -1 if the server is not listening.
 
bool setSocketDescriptor (qintptr socketDescriptor)
 Sets the socket descriptor this server should use when listening for incoming connections to socketDescriptor.
 
bool waitForNewConnection (int msec=0, bool *timedOut=nullptr)
 Waits for at most msec milliseconds or until an incoming connection is available.
 
virtual bool hasPendingConnections () const
 Returns true if the server has a pending connection; otherwise returns false.
 
virtual QTcpSocketnextPendingConnection ()
 Returns the next pending connection as a connected QTcpSocket object.
 
QAbstractSocket::SocketError serverError () const
 Returns an error code for the last error that occurred.
 
QString errorString () const
 Returns a human readable description of the last error that occurred.
 
void pauseAccepting ()
 
void resumeAccepting ()
 
void setProxy (const QNetworkProxy &networkProxy)
 
QNetworkProxy proxy () const
 
- Public Member Functions inherited from QObject
Q_INVOKABLE QObject (QObject *parent=nullptr)
 Constructs an object with parent object parent.
 
virtual ~QObject ()
 Destroys the object, deleting all its child objects.
 
virtual bool event (QEvent *event)
 This virtual function receives events to an object and should return true if the event e was recognized and processed.
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 Filters events if this object has been installed as an event filter for the watched object.
 
QString objectName () const
 
Q_WEAK_OVERLOAD void setObjectName (const QString &name)
 Sets the object's name to name.
 
void setObjectName (QAnyStringView name)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
QBindable< QStringbindableObjectName ()
 
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false.
 
bool isWindowType () const
 Returns true if the object is a window; otherwise returns false.
 
bool isQuickItemType () const
 Returns true if the object is a QQuickItem; otherwise returns false.
 
bool signalsBlocked () const noexcept
 Returns true if signals are blocked; otherwise returns false.
 
bool blockSignals (bool b) noexcept
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it).
 
QThreadthread () const
 Returns the thread in which the object lives.
 
bool moveToThread (QThread *thread QT6_DECL_NEW_OVERLOAD_TAIL)
 Changes the thread affinity for this object and its children and returns true on success.
 
int startTimer (int interval, Qt::TimerType timerType=Qt::CoarseTimer)
 This is an overloaded function that will start a timer of type timerType and a timeout of interval milliseconds.
 
int startTimer (std::chrono::nanoseconds time, Qt::TimerType timerType=Qt::CoarseTimer)
 
void killTimer (int id)
 Kills the timer with timer identifier, id.
 
void killTimer (Qt::TimerId id)
 
template<typename T >
findChild (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 Returns the child of this object that can be cast into type T and that is called name, or \nullptr if there is no such object.
 
template<typename T >
QList< T > findChildren (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects.
 
template<typename T >
findChild (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
template<typename T >
QList< T > findChildren (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
const QObjectListchildren () const
 Returns a list of child objects.
 
void setParent (QObject *parent)
 Makes the object a child of parent.
 
void installEventFilter (QObject *filterObj)
 Installs an event filter filterObj on this object.
 
void removeEventFilter (QObject *obj)
 Removes an event filter object obj from this object.
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
 
bool disconnect (const char *signal=nullptr, const QObject *receiver=nullptr, const char *member=nullptr) const
 
bool disconnect (const QObject *receiver, const char *member=nullptr) const
 
void dumpObjectTree () const
 Dumps a tree of children to the debug output.
 
void dumpObjectInfo () const
 Dumps information about signal connections, etc.
 
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value.
 
bool setProperty (const char *name, QVariant &&value)
 
QVariant property (const char *name) const
 Returns the value of the object's name property.
 
QList< QByteArraydynamicPropertyNames () const
 
QBindingStoragebindingStorage ()
 
const QBindingStoragebindingStorage () const
 
QObjectparent () const
 Returns a pointer to the parent object.
 
bool inherits (const char *classname) const
 Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false.
 

Protected Member Functions

void incomingConnection (qintptr socket) override
 Called when a new connection is established.
 
- Protected Member Functions inherited from QTcpServer
void addPendingConnection (QTcpSocket *socket)
 This function is called by QTcpServer::incomingConnection() to add the socket to the list of pending incoming connections.
 
 QTcpServer (QAbstractSocket::SocketType socketType, QTcpServerPrivate &dd, QObject *parent=nullptr)
 
- Protected Member Functions inherited from QObject
QObjectsender () const
 Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns \nullptr.
 
int senderSignalIndex () const
 
int receivers (const char *signal) const
 Returns the number of receivers connected to the signal.
 
bool isSignalConnected (const QMetaMethod &signal) const
 
virtual void timerEvent (QTimerEvent *event)
 This event handler can be reimplemented in a subclass to receive timer events for the object.
 
virtual void childEvent (QChildEvent *event)
 This event handler can be reimplemented in a subclass to receive child events.
 
virtual void customEvent (QEvent *event)
 This event handler can be reimplemented in a subclass to receive custom events.
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 
 QObject (QObjectPrivate &dd, QObject *parent=nullptr)
 

Additional Inherited Members

- Public Slots inherited from QObject
void deleteLater ()
 \threadsafe
 
- Static Public Member Functions inherited from QObject
static QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 \threadsafe
 
static QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
 
template<typename Func1 , typename Func2 >
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::ContextTypeForFunctor< Func2 >::ContextType *context, Func2 &&slot, Qt::ConnectionType type=Qt::AutoConnection)
 
template<typename Func1 , typename Func2 >
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, Func2 &&slot)
 
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 \threadsafe
 
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
 
static bool disconnect (const QMetaObject::Connection &)
 Disconnect a connection.
 
template<typename Func1 , typename Func2 >
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot)
 
template<typename Func1 >
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const QObject *receiver, void **zero)
 
- Protected Attributes inherited from QObject
QScopedPointer< QObjectDatad_ptr
 
- Properties inherited from QObject
QString objectName
 the name of this object
 

Detailed Description

\inmodule QtNetwork

Since
6.4

Implements an encrypted, secure TCP server over TLS.

Class to use in place of QTcpServer to implement TCP server using Transport Layer Security (TLS).

To configure the secure handshake settings, use the applicable setter functions on a QSslConfiguration object, and then use it as an argument to the setSslConfiguration() function. All following incoming connections handled will use these settings.

To start listening to incoming connections use the listen() function inherited from QTcpServer. Other settings can be configured by using the setter functions inherited from the QTcpServer class.

Connect to the signals of this class to respond to the incoming connection attempts. They are the same as the signals on QSslSocket, but also passes a pointer to the socket in question.

When responding to the pendingConnectionAvailable() signal, use the nextPendingConnection() function to fetch the next incoming connection and take it out of the pending connection queue. The QSslSocket is a child of the QSslServer and will be deleted when the QSslServer is deleted. It is still a good idea to destroy the object explicitly when you are done with it, to avoid wasting memory.

See also
QTcpServer, QSslConfiguration, QSslSocket

Definition at line 24 of file qsslserver.h.

Constructor & Destructor Documentation

◆ QSslServer()

QSslServer::QSslServer ( QObject * parent = nullptr)
explicit

Constructs a new QSslServer with the given parent.

Definition at line 200 of file qsslserver.cpp.

◆ ~QSslServer()

QSslServer::~QSslServer ( )
override

Destroys the QSslServer.

All open connections are closed.

Definition at line 210 of file qsslserver.cpp.

Member Function Documentation

◆ alertReceived

void QSslServer::alertReceived ( QSslSocket * socket,
QSsl::AlertLevel level,
QSsl::AlertType type,
const QString & description )
signal

QSslServer emits this signal if an alert message was received by the socket from a peer.

level tells if the alert was fatal or it was a warning. type is the code explaining why the alert was sent. When a textual description of the alert message is available, it is supplied in description.

Note
The signal is mostly for informational and debugging purposes and does not require any handling in the application. If the alert was fatal, underlying backend will handle it and close the connection.
Not all backends support this functionality.
See also
alertSent(), QSsl::AlertLevel, QSsl::AlertType

Referenced by incomingConnection().

+ Here is the caller graph for this function:

◆ alertSent

void QSslServer::alertSent ( QSslSocket * socket,
QSsl::AlertLevel level,
QSsl::AlertType type,
const QString & description )
signal

QSslServer emits this signal if an alert message was sent from socket to a peer.

level describes if it was a warning or a fatal error. type gives the code of the alert message. When a textual description of the alert message is available, it is supplied in description.

Note
This signal is mostly informational and can be used for debugging purposes, normally it does not require any actions from the application.
Not all backends support this functionality.
See also
alertReceived(), QSsl::AlertLevel, QSsl::AlertType

Referenced by incomingConnection().

+ Here is the caller graph for this function:

◆ errorOccurred

void QSslServer::errorOccurred ( QSslSocket * socket,
QAbstractSocket::SocketError socketError )
signal

This signal is emitted after an error occurred during handshake.

The socketError parameter describes the type of error that occurred.

The socket is automatically deleted after this signal is emitted if the socket handshake has not reached encrypted state. But if the socket is successfully encrypted, it is inserted into the QSslServer's pending connections queue. When the user has called QTcpServer::nextPendingConnection() it is the user's responsibility to destroy the socket or the socket will not be destroyed until the QSslServer object is destroyed. If an error occurs on a socket after it has been inserted into the pending connections queue, this signal will not be emitted, and the socket will not be removed or destroyed.

Note
You cannot use Qt::QueuedConnection when connecting to this signal, or the socket will have been already destroyed when the signal is handled.
See also
QSslSocket::error(), errorString()

Referenced by incomingConnection().

+ Here is the caller graph for this function:

◆ handshakeInterruptedOnError

void QSslServer::handshakeInterruptedOnError ( QSslSocket * socket,
const QSslError & error )
signal

QSslServer emits this signal if a certificate verification error was found by socket and if early error reporting was enabled in QSslConfiguration.

An application is expected to inspect the error and decide if it wants to continue the handshake, or abort it and send an alert message to the peer. The signal-slot connection must be direct.

See also
QSslSocket::continueInterruptedHandshake(), sslErrors(), QSslConfiguration::setHandshakeMustInterruptOnError()

Referenced by incomingConnection().

+ Here is the caller graph for this function:

◆ handshakeTimeout()

int QSslServer::handshakeTimeout ( ) const

Returns the currently configured handshake timeout.

See also
setHandshakeTimeout()

Definition at line 267 of file qsslserver.cpp.

References d.

◆ incomingConnection()

void QSslServer::incomingConnection ( qintptr socket)
overrideprotectedvirtual

◆ peerVerifyError

void QSslServer::peerVerifyError ( QSslSocket * socket,
const QSslError & error )
signal

QSslServer can emit this signal several times during the SSL handshake, before encryption has been established, to indicate that an error has occurred while establishing the identity of the peer.

The error is usually an indication that socket is unable to securely identify the peer.

This signal provides you with an early indication when something's wrong. By connecting to this signal, you can manually choose to tear down the connection from inside the connected slot before the handshake has completed. If no action is taken, QSslServer will proceed to emitting sslErrors().

See also
sslErrors()

Referenced by incomingConnection().

+ Here is the caller graph for this function:

◆ preSharedKeyAuthenticationRequired

void QSslServer::preSharedKeyAuthenticationRequired ( QSslSocket * socket,
QSslPreSharedKeyAuthenticator * authenticator )
signal

QSslServer emits this signal when socket negotiates a PSK ciphersuite, and therefore PSK authentication is then required.

When using PSK, the server must supply a valid identity and a valid pre shared key, in order for the SSL handshake to continue. Applications can provide this information in a slot connected to this signal, by filling in the passed authenticator object according to their needs.

Note
Ignoring this signal, or failing to provide the required credentials, will cause the handshake to fail, and therefore the connection to be aborted.
The authenticator object is owned by the socket and must not be deleted by the application.
See also
QSslPreSharedKeyAuthenticator

Referenced by incomingConnection().

+ Here is the caller graph for this function:

◆ setHandshakeTimeout()

void QSslServer::setHandshakeTimeout ( int timeout)

Sets the timeout to use for all incoming handshakes, in milliseconds.

This is relevant in the scenario where a client, whether malicious or accidental, connects to the server but makes no attempt at communicating or initiating a handshake. QSslServer will then automatically end the connection after timeout milliseconds have elapsed.

By default the timeout is 5000 milliseconds (5 seconds).

Note
The underlying TLS framework may have their own timeout logic now or in the future, this function does not affect that.
The timeout passed to this function will only apply to {new} connections. If a client is already connected it will use the timeout which was set when it connected.
See also
handshakeTimeout()

Definition at line 256 of file qsslserver.cpp.

References d.

◆ setSslConfiguration()

void QSslServer::setSslConfiguration ( const QSslConfiguration & sslConfiguration)

Sets the sslConfiguration to use for all following incoming connections.

This must be called before listen() to ensure that the desired configuration was in use during all handshakes.

See also
QSslSocket::setSslConfiguration()

Definition at line 222 of file qsslserver.cpp.

References d, and sslConfiguration().

+ Here is the call graph for this function:

◆ sslConfiguration()

QSslConfiguration QSslServer::sslConfiguration ( ) const

Returns the current ssl configuration.

Definition at line 231 of file qsslserver.cpp.

References d.

Referenced by incomingConnection(), and setSslConfiguration().

+ Here is the caller graph for this function:

◆ sslErrors

void QSslServer::sslErrors ( QSslSocket * socket,
const QList< QSslError > & errors )
signal

QSslServer emits this signal after the SSL handshake to indicate that one or more errors have occurred while establishing the identity of the peer.

The errors are usually an indication that socket is unable to securely identify the peer. Unless any action is taken, the connection will be dropped after this signal has been emitted.

If you want to continue connecting despite the errors that have occurred, you must call QSslSocket::ignoreSslErrors() from inside a slot connected to this signal. If you need to access the error list at a later point, you can call sslHandshakeErrors().

errors contains one or more errors that prevent QSslSocket from verifying the identity of the peer.

Note
You cannot use Qt::QueuedConnection when connecting to this signal, or calling QSslSocket::ignoreSslErrors() will have no effect.
See also
peerVerifyError()

Referenced by incomingConnection().

+ Here is the caller graph for this function:

◆ startedEncryptionHandshake

void QSslServer::startedEncryptionHandshake ( QSslSocket * socket)
signal

This signal is emitted when the client, connected to socket, initiates the TLS handshake.


The documentation for this class was generated from the following files: