summaryrefslogtreecommitdiffstats
path: root/src/network/socket
diff options
context:
space:
mode:
Diffstat (limited to 'src/network/socket')
-rw-r--r--src/network/socket/qabstractsocket.cpp13
-rw-r--r--src/network/socket/qabstractsocket_p.h12
-rw-r--r--src/network/socket/qlocalsocket_p.h4
-rw-r--r--src/network/socket/qnativesocketengine.cpp6
-rw-r--r--src/network/socket/qnativesocketengine_winrt.cpp84
-rw-r--r--src/network/socket/qsctpserver.cpp28
-rw-r--r--src/network/socket/qsctpserver.h4
-rw-r--r--src/network/socket/qsctpserver_p.h2
-rw-r--r--src/network/socket/qsctpsocket.cpp44
-rw-r--r--src/network/socket/qsctpsocket.h6
-rw-r--r--src/network/socket/qsctpsocket_p.h2
11 files changed, 137 insertions, 68 deletions
diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp
index 6b773e2be9..271b5848c5 100644
--- a/src/network/socket/qabstractsocket.cpp
+++ b/src/network/socket/qabstractsocket.cpp
@@ -1112,10 +1112,15 @@ void QAbstractSocketPrivate::_q_connectToNextAddress()
// Tries to connect to the address. If it succeeds immediately
// (localhost address on BSD or any UDP connect), emit
// connected() and return.
- if (socketEngine->connectToHost(host, port)) {
- //_q_testConnection();
- fetchConnectionParameters();
- return;
+ if (
+#if defined(Q_OS_WINRT) && _MSC_VER >= 1900
+ !qEnvironmentVariableIsEmpty("QT_WINRT_USE_THREAD_NETWORK_CONTEXT") ?
+ socketEngine->connectToHostByName(hostName, port) :
+#endif
+ socketEngine->connectToHost(host, port)) {
+ //_q_testConnection();
+ fetchConnectionParameters();
+ return;
}
// Check that we're in delayed connection state. If not, try
diff --git a/src/network/socket/qabstractsocket_p.h b/src/network/socket/qabstractsocket_p.h
index 1578d7bb35..8a96cb9d48 100644
--- a/src/network/socket/qabstractsocket_p.h
+++ b/src/network/socket/qabstractsocket_p.h
@@ -72,13 +72,13 @@ public:
virtual ~QAbstractSocketPrivate();
// from QAbstractSocketEngineReceiver
- inline void readNotification() { canReadNotification(); }
- inline void writeNotification() { canWriteNotification(); }
- inline void exceptionNotification() {}
- inline void closeNotification() { canCloseNotification(); }
- void connectionNotification();
+ inline void readNotification() override { canReadNotification(); }
+ inline void writeNotification() override { canWriteNotification(); }
+ inline void exceptionNotification() override {}
+ inline void closeNotification() override { canCloseNotification(); }
+ void connectionNotification() override;
#ifndef QT_NO_NETWORKPROXY
- inline void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator) {
+ inline void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator) override {
Q_Q(QAbstractSocket);
q->proxyAuthenticationRequired(proxy, authenticator);
}
diff --git a/src/network/socket/qlocalsocket_p.h b/src/network/socket/qlocalsocket_p.h
index 560d74328e..9da37d2af3 100644
--- a/src/network/socket/qlocalsocket_p.h
+++ b/src/network/socket/qlocalsocket_p.h
@@ -99,12 +99,12 @@ public:
QTcpSocket::setSocketError(error);
}
- inline qint64 readData(char *data, qint64 maxSize)
+ inline qint64 readData(char *data, qint64 maxSize) override
{
return QTcpSocket::readData(data, maxSize);
}
- inline qint64 writeData(const char *data, qint64 maxSize)
+ inline qint64 writeData(const char *data, qint64 maxSize) override
{
return QTcpSocket::writeData(data, maxSize);
}
diff --git a/src/network/socket/qnativesocketengine.cpp b/src/network/socket/qnativesocketengine.cpp
index 11d19682d8..928c7fc68f 100644
--- a/src/network/socket/qnativesocketengine.cpp
+++ b/src/network/socket/qnativesocketengine.cpp
@@ -1230,7 +1230,7 @@ public:
{ engine = parent; }
protected:
- bool event(QEvent *);
+ bool event(QEvent *) override;
QNativeSocketEngine *engine;
};
@@ -1262,7 +1262,7 @@ public:
: QSocketNotifier(fd, QSocketNotifier::Write, parent) { engine = parent; }
protected:
- bool event(QEvent *);
+ bool event(QEvent *) override;
QNativeSocketEngine *engine;
};
@@ -1286,7 +1286,7 @@ public:
: QSocketNotifier(fd, QSocketNotifier::Exception, parent) { engine = parent; }
protected:
- bool event(QEvent *);
+ bool event(QEvent *) override;
QNativeSocketEngine *engine;
};
diff --git a/src/network/socket/qnativesocketengine_winrt.cpp b/src/network/socket/qnativesocketengine_winrt.cpp
index 3daca38959..8257eec9ea 100644
--- a/src/network/socket/qnativesocketengine_winrt.cpp
+++ b/src/network/socket/qnativesocketengine_winrt.cpp
@@ -75,6 +75,9 @@ using namespace ABI::Windows::Storage::Streams;
using namespace ABI::Windows::Networking;
using namespace ABI::Windows::Networking::Connectivity;
using namespace ABI::Windows::Networking::Sockets;
+#if _MSC_VER >= 1900
+using namespace ABI::Windows::Security::EnterpriseData;
+#endif
typedef ITypedEventHandler<StreamSocketListener *, StreamSocketListenerConnectionReceivedEventArgs *> ClientConnectedHandler;
typedef ITypedEventHandler<DatagramSocket *, DatagramSocketMessageReceivedEventArgs *> DatagramReceivedHandler;
@@ -84,6 +87,45 @@ typedef IAsyncOperationWithProgress<IBuffer *, UINT32> IAsyncBufferOperation;
QT_BEGIN_NAMESPACE
+#if _MSC_VER >= 1900
+static HRESULT qt_winrt_try_create_thread_network_context(QString host, ComPtr<IThreadNetworkContext> &context)
+{
+ HRESULT hr;
+ ComPtr<IProtectionPolicyManagerStatics> protectionPolicyManager;
+
+ hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Security_EnterpriseData_ProtectionPolicyManager).Get(),
+ &protectionPolicyManager);
+ RETURN_HR_IF_FAILED("Could not access ProtectionPolicyManager statics.");
+
+ ComPtr<IHostNameFactory> hostNameFactory;
+ hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_HostName).Get(),
+ &hostNameFactory);
+ RETURN_HR_IF_FAILED("Could not access HostName factory.");
+
+ ComPtr<IHostName> hostName;
+ HStringReference hostRef(reinterpret_cast<LPCWSTR>(host.utf16()), host.length());
+ hr = hostNameFactory->CreateHostName(hostRef.Get(), &hostName);
+ RETURN_HR_IF_FAILED("Could not create hostname.");
+
+ ComPtr<IAsyncOperation<HSTRING>> op;
+ hr = protectionPolicyManager->GetPrimaryManagedIdentityForNetworkEndpointAsync(hostName.Get(), &op);
+ RETURN_HR_IF_FAILED("Could not get identity operation.");
+
+ HSTRING hIdentity;
+ hr = QWinRTFunctions::await(op, &hIdentity);
+ RETURN_HR_IF_FAILED("Could not wait for identity operation.");
+
+ // Implies there is no need for a network context for this address
+ if (hIdentity == nullptr)
+ return S_OK;
+
+ hr = protectionPolicyManager->CreateCurrentThreadNetworkContext(hIdentity, &context);
+ RETURN_HR_IF_FAILED("Could not create thread network context");
+
+ return S_OK;
+}
+#endif // _MSC_VER >= 1900
+
static inline QString qt_QStringFromHString(const HString &string)
{
UINT32 length;
@@ -316,25 +358,23 @@ bool QNativeSocketEngine::initialize(qintptr socketDescriptor, QAbstractSocket::
// Start processing incoming data
if (d->socketType == QAbstractSocket::TcpSocket) {
- HRESULT hr;
- QEventDispatcherWinRT::runOnXamlThread([&hr, socket, socketState, this]() {
- Q_D(QNativeSocketEngine);
+ HRESULT hr = QEventDispatcherWinRT::runOnXamlThread([d, socket, socketState, this]() {
ComPtr<IBuffer> buffer;
HRESULT hr = g->bufferFactory->Create(READ_BUFFER_SIZE, &buffer);
- RETURN_OK_IF_FAILED("initialize(): Could not create buffer");
+ RETURN_HR_IF_FAILED("initialize(): Could not create buffer");
ComPtr<IInputStream> stream;
hr = socket->get_InputStream(&stream);
- RETURN_OK_IF_FAILED("initialize(): Could not obtain input stream");
+ RETURN_HR_IF_FAILED("initialize(): Could not obtain input stream");
ComPtr<IAsyncBufferOperation> readOp;
hr = stream->ReadAsync(buffer.Get(), READ_BUFFER_SIZE, InputStreamOptions_Partial, readOp.GetAddressOf());
- RETURN_OK_IF_FAILED_WITH_ARGS("initialize(): Failed to read from the socket buffer (%s).",
- socketDescription(this).constData());
+ RETURN_HR_IF_FAILED_WITH_ARGS("initialize(): Failed to read from the socket buffer (%s).",
+ socketDescription(this).constData());
QMutexLocker locker(&d->readOperationsMutex);
d->pendingReadOps.append(readOp);
d->socketState = socketState;
hr = readOp->put_Completed(Callback<SocketReadCompletedHandler>(d, &QNativeSocketEnginePrivate::handleReadyRead).Get());
- RETURN_OK_IF_FAILED_WITH_ARGS("initialize(): Failed to set socket read callback (%s).",
- socketDescription(this).constData());
+ RETURN_HR_IF_FAILED_WITH_ARGS("initialize(): Failed to set socket read callback (%s).",
+ socketDescription(this).constData());
return S_OK;
});
if (FAILED(hr))
@@ -367,9 +407,23 @@ bool QNativeSocketEngine::connectToHost(const QHostAddress &address, quint16 por
bool QNativeSocketEngine::connectToHostByName(const QString &name, quint16 port)
{
Q_D(QNativeSocketEngine);
+ HRESULT hr;
+
+#if _MSC_VER >= 1900
+ ComPtr<IThreadNetworkContext> networkContext;
+ if (!qEnvironmentVariableIsEmpty("QT_WINRT_USE_THREAD_NETWORK_CONTEXT")) {
+ hr = qt_winrt_try_create_thread_network_context(name, networkContext);
+ if (FAILED(hr)) {
+ setError(QAbstractSocket::ConnectionRefusedError, QLatin1String("Could not create thread network context."));
+ d->socketState = QAbstractSocket::ConnectedState;
+ return true;
+ }
+ }
+#endif // _MSC_VER >= 1900
+
HStringReference hostNameRef(reinterpret_cast<LPCWSTR>(name.utf16()));
ComPtr<IHostNameFactory> hostNameFactory;
- HRESULT hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_HostName).Get(),
+ hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Networking_HostName).Get(),
&hostNameFactory);
Q_ASSERT_SUCCEEDED(hr);
ComPtr<IHostName> remoteHost;
@@ -390,6 +444,16 @@ bool QNativeSocketEngine::connectToHostByName(const QString &name, quint16 port)
}
Q_ASSERT_SUCCEEDED(hr);
+#if _MSC_VER >= 1900
+ if (networkContext != nullptr) {
+ ComPtr<IClosable> networkContextCloser;
+ hr = networkContext.As(&networkContextCloser);
+ Q_ASSERT_SUCCEEDED(hr);
+ hr = networkContextCloser->Close();
+ Q_ASSERT_SUCCEEDED(hr);
+ }
+#endif // _MSC_VER >= 1900
+
d->socketState = QAbstractSocket::ConnectingState;
QEventDispatcherWinRT::runOnXamlThread([d, &hr]() {
hr = d->connectOp->put_Completed(Callback<IAsyncActionCompletedHandler>(
diff --git a/src/network/socket/qsctpserver.cpp b/src/network/socket/qsctpserver.cpp
index 24f18e1ee8..77cb997192 100644
--- a/src/network/socket/qsctpserver.cpp
+++ b/src/network/socket/qsctpserver.cpp
@@ -60,7 +60,7 @@
The most common way to use QSctpServer is to construct an object
and set the maximum number of channels that the server is
- prepared to support, by calling setMaxChannelCount(). You can set
+ prepared to support, by calling setMaximumChannelCount(). You can set
the TCP emulation mode by passing a negative argument in this
call. Also, a special value of 0 (the default) indicates to use
the peer's value as the actual number of channels. The new incoming
@@ -102,7 +102,7 @@ QT_BEGIN_NAMESPACE
/*! \internal
*/
QSctpServerPrivate::QSctpServerPrivate()
- : maxChannelCount(0)
+ : maximumChannelCount(0)
{
}
@@ -119,7 +119,7 @@ void QSctpServerPrivate::configureCreatedSocket()
QTcpServerPrivate::configureCreatedSocket();
if (socketEngine)
socketEngine->setOption(QAbstractSocketEngine::MaxStreamsSocketOption,
- maxChannelCount == -1 ? 1 : maxChannelCount);
+ maximumChannelCount == -1 ? 1 : maximumChannelCount);
}
/*!
@@ -128,7 +128,7 @@ void QSctpServerPrivate::configureCreatedSocket()
Sets the datagram operation mode. The \a parent argument is passed
to QObject's constructor.
- \sa setMaxChannelCount(), listen(), setSocketDescriptor()
+ \sa setMaximumChannelCount(), listen(), setSocketDescriptor()
*/
QSctpServer::QSctpServer(QObject *parent)
: QTcpServer(QAbstractSocket::SctpSocket, *new QSctpServerPrivate, parent)
@@ -159,19 +159,19 @@ QSctpServer::~QSctpServer()
Call this method only when QSctpServer is in UnconnectedState.
- \sa maxChannelCount(), QSctpSocket
+ \sa maximumChannelCount(), QSctpSocket
*/
-void QSctpServer::setMaxChannelCount(int count)
+void QSctpServer::setMaximumChannelCount(int count)
{
Q_D(QSctpServer);
if (d->state != QAbstractSocket::UnconnectedState) {
- qWarning("QSctpServer::setMaxChannelCount() is only allowed in UnconnectedState");
+ qWarning("QSctpServer::setMaximumChannelCount() is only allowed in UnconnectedState");
return;
}
#if defined(QSCTPSERVER_DEBUG)
- qDebug("QSctpServer::setMaxChannelCount(%i)", count);
+ qDebug("QSctpServer::setMaximumChannelCount(%i)", count);
#endif
- d->maxChannelCount = count;
+ d->maximumChannelCount = count;
}
/*!
@@ -183,11 +183,11 @@ void QSctpServer::setMaxChannelCount(int count)
Returns -1, if QSctpServer running in TCP emulation mode.
- \sa setMaxChannelCount()
+ \sa setMaximumChannelCount()
*/
-int QSctpServer::maxChannelCount() const
+int QSctpServer::maximumChannelCount() const
{
- return d_func()->maxChannelCount;
+ return d_func()->maximumChannelCount;
}
/*! \reimp
@@ -199,7 +199,7 @@ void QSctpServer::incomingConnection(qintptr socketDescriptor)
#endif
QSctpSocket *socket = new QSctpSocket(this);
- socket->setMaxChannelCount(d_func()->maxChannelCount);
+ socket->setMaximumChannelCount(d_func()->maximumChannelCount);
socket->setSocketDescriptor(socketDescriptor);
addPendingConnection(socket);
}
@@ -234,7 +234,7 @@ QSctpSocket *QSctpServer::nextPendingDatagramConnection()
QSctpSocket *socket = qobject_cast<QSctpSocket *>(i.next());
Q_ASSERT(socket);
- if (socket->inDatagramMode()) {
+ if (socket->isInDatagramMode()) {
i.remove();
Q_ASSERT(d->socketEngine);
d->socketEngine->setReadNotificationEnabled(true);
diff --git a/src/network/socket/qsctpserver.h b/src/network/socket/qsctpserver.h
index fd2ed6f97f..1afdab28a0 100644
--- a/src/network/socket/qsctpserver.h
+++ b/src/network/socket/qsctpserver.h
@@ -57,8 +57,8 @@ public:
explicit QSctpServer(QObject *parent = nullptr);
virtual ~QSctpServer();
- void setMaxChannelCount(int count);
- int maxChannelCount() const;
+ void setMaximumChannelCount(int count);
+ int maximumChannelCount() const;
QSctpSocket *nextPendingDatagramConnection();
diff --git a/src/network/socket/qsctpserver_p.h b/src/network/socket/qsctpserver_p.h
index 32760caffe..274939fc3d 100644
--- a/src/network/socket/qsctpserver_p.h
+++ b/src/network/socket/qsctpserver_p.h
@@ -64,7 +64,7 @@ public:
QSctpServerPrivate();
virtual ~QSctpServerPrivate();
- int maxChannelCount;
+ int maximumChannelCount;
void configureCreatedSocket() Q_DECL_OVERRIDE;
};
diff --git a/src/network/socket/qsctpsocket.cpp b/src/network/socket/qsctpsocket.cpp
index cb07e80299..fe76f64c42 100644
--- a/src/network/socket/qsctpsocket.cpp
+++ b/src/network/socket/qsctpsocket.cpp
@@ -83,14 +83,14 @@
\endlist
To set a continuous byte stream mode, instantiate QSctpSocket and
- call setMaxChannelCount() with a negative value. This gives the
+ call setMaximumChannelCount() with a negative value. This gives the
ability to use QSctpSocket as a regular buffered QTcpSocket. You
can call connectToHost() to initiate connection with endpoint,
write() to transmit and read() to receive data from the peer, but
you cannot distinguish message boundaries.
By default, QSctpSocket operates in datagram mode. Before
- connecting, call setMaxChannelCount() to set the maximum number of
+ connecting, call setMaximumChannelCount() to set the maximum number of
channels that the application is prepared to support. This number
is a parameter negotiated with the remote endpoint and its value
can be bounded by the operating system. The default value of 0
@@ -130,7 +130,7 @@ QT_BEGIN_NAMESPACE
/*! \internal
*/
QSctpSocketPrivate::QSctpSocketPrivate()
- : maxChannelCount(0)
+ : maximumChannelCount(0)
{
}
@@ -150,7 +150,7 @@ bool QSctpSocketPrivate::canReadNotification()
#endif
// Handle TCP emulation mode in the base implementation.
- if (!q->inDatagramMode())
+ if (!q->isInDatagramMode())
return QTcpSocketPrivate::canReadNotification();
const int savedCurrentChannel = currentReadChannel;
@@ -248,7 +248,7 @@ bool QSctpSocketPrivate::writeToSocket()
#endif
// Handle TCP emulation mode in the base implementation.
- if (!q->inDatagramMode())
+ if (!q->isInDatagramMode())
return QTcpSocketPrivate::writeToSocket();
if (!socketEngine)
@@ -331,7 +331,7 @@ void QSctpSocketPrivate::configureCreatedSocket()
{
if (socketEngine)
socketEngine->setOption(QAbstractSocketEngine::MaxStreamsSocketOption,
- maxChannelCount < 0 ? 1 : maxChannelCount);
+ maximumChannelCount < 0 ? 1 : maximumChannelCount);
}
/*!
@@ -340,7 +340,7 @@ void QSctpSocketPrivate::configureCreatedSocket()
Sets the datagram operation mode. The \a parent argument is passed
to QObject's constructor.
- \sa socketType(), setMaxChannelCount()
+ \sa socketType(), setMaximumChannelCount()
*/
QSctpSocket::QSctpSocket(QObject *parent)
: QTcpSocket(SctpSocket, *new QSctpSocketPrivate, parent)
@@ -418,19 +418,19 @@ void QSctpSocket::disconnectFromHost()
Call this method only when QSctpSocket is in UnconnectedState.
- \sa maxChannelCount(), readChannelCount(), writeChannelCount()
+ \sa maximumChannelCount(), readChannelCount(), writeChannelCount()
*/
-void QSctpSocket::setMaxChannelCount(int count)
+void QSctpSocket::setMaximumChannelCount(int count)
{
Q_D(QSctpSocket);
if (d->state != QAbstractSocket::UnconnectedState) {
- qWarning("QSctpSocket::setMaxChannelCount() is only allowed in UnconnectedState");
+ qWarning("QSctpSocket::setMaximumChannelCount() is only allowed in UnconnectedState");
return;
}
#if defined(QSCTPSOCKET_DEBUG)
- qDebug("QSctpSocket::setMaxChannelCount(%i)", count);
+ qDebug("QSctpSocket::setMaximumChannelCount(%i)", count);
#endif
- d->maxChannelCount = qMax(count, -1);
+ d->maximumChannelCount = qMax(count, -1);
}
/*!
@@ -443,22 +443,22 @@ void QSctpSocket::setMaxChannelCount(int count)
Returns -1 if QSctpSocket is running in continuous byte stream
mode.
- \sa setMaxChannelCount(), readChannelCount(), writeChannelCount()
+ \sa setMaximumChannelCount(), readChannelCount(), writeChannelCount()
*/
-int QSctpSocket::maxChannelCount() const
+int QSctpSocket::maximumChannelCount() const
{
- return d_func()->maxChannelCount;
+ return d_func()->maximumChannelCount;
}
/*!
Returns \c true if the socket is running in datagram mode.
- \sa setMaxChannelCount()
+ \sa setMaximumChannelCount()
*/
-bool QSctpSocket::inDatagramMode() const
+bool QSctpSocket::isInDatagramMode() const
{
Q_D(const QSctpSocket);
- return d->maxChannelCount != -1 && d->isBuffered;
+ return d->maximumChannelCount != -1 && d->isBuffered;
}
/*!
@@ -471,13 +471,13 @@ bool QSctpSocket::inDatagramMode() const
On failure, returns a QNetworkDatagram that reports \l
{QNetworkDatagram::isValid()}{not valid}.
- \sa writeDatagram(), inDatagramMode(), currentReadChannel()
+ \sa writeDatagram(), isInDatagramMode(), currentReadChannel()
*/
QNetworkDatagram QSctpSocket::readDatagram()
{
Q_D(QSctpSocket);
- if (!isReadable() || !inDatagramMode()) {
+ if (!isReadable() || !isInDatagramMode()) {
qWarning("QSctpSocket::readDatagram(): operation is not permitted");
return QNetworkDatagram();
}
@@ -507,14 +507,14 @@ QNetworkDatagram QSctpSocket::readDatagram()
Writes a \a datagram to the buffer of the current write channel.
Returns true on success; otherwise returns false.
- \sa readDatagram(), inDatagramMode(), currentWriteChannel()
+ \sa readDatagram(), isInDatagramMode(), currentWriteChannel()
*/
bool QSctpSocket::writeDatagram(const QNetworkDatagram &datagram)
{
Q_D(QSctpSocket);
if (!isWritable() || d->state != QAbstractSocket::ConnectedState || !d->socketEngine
- || !d->socketEngine->isValid() || !inDatagramMode()) {
+ || !d->socketEngine->isValid() || !isInDatagramMode()) {
qWarning("QSctpSocket::writeDatagram(): operation is not permitted");
return false;
}
diff --git a/src/network/socket/qsctpsocket.h b/src/network/socket/qsctpsocket.h
index d5a1f21c04..9bed1890ff 100644
--- a/src/network/socket/qsctpsocket.h
+++ b/src/network/socket/qsctpsocket.h
@@ -59,9 +59,9 @@ public:
void close() Q_DECL_OVERRIDE;
void disconnectFromHost() Q_DECL_OVERRIDE;
- void setMaxChannelCount(int count);
- int maxChannelCount() const;
- bool inDatagramMode() const;
+ void setMaximumChannelCount(int count);
+ int maximumChannelCount() const;
+ bool isInDatagramMode() const;
QNetworkDatagram readDatagram();
bool writeDatagram(const QNetworkDatagram &datagram);
diff --git a/src/network/socket/qsctpsocket_p.h b/src/network/socket/qsctpsocket_p.h
index f38095330f..3f765ebed9 100644
--- a/src/network/socket/qsctpsocket_p.h
+++ b/src/network/socket/qsctpsocket_p.h
@@ -74,7 +74,7 @@ public:
bool writeToSocket() Q_DECL_OVERRIDE;
QByteArray incomingDatagram;
- int maxChannelCount;
+ int maximumChannelCount;
typedef std::deque<QIpPacketHeader> IpHeaderList;
QVector<IpHeaderList> readHeaders;