summaryrefslogtreecommitdiffstats
path: root/src/network
diff options
context:
space:
mode:
authorAlex Trotsenko <alex1973tr@gmail.com>2016-08-02 14:51:56 +0300
committerAlex Trotsenko <alex1973tr@gmail.com>2016-08-03 06:21:47 +0000
commit733c4de36e71fa58dc444a181d725bfa46699a16 (patch)
tree0879ae3c0c165d9fb5ccebf750ce01abec0ad03c /src/network
parentc0637c02980a20343f877a24869ec539d05e4546 (diff)
Fix some syntax issues in SCTP implementation
Change-Id: I718fd060e313d544a5470fa20183db04ef89b1ca Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'src/network')
-rw-r--r--src/network/kernel/qnetworkproxy_win.cpp3
-rw-r--r--src/network/socket/qnativesocketengine_unix.cpp4
-rw-r--r--src/network/socket/qsctpsocket.cpp8
3 files changed, 10 insertions, 5 deletions
diff --git a/src/network/kernel/qnetworkproxy_win.cpp b/src/network/kernel/qnetworkproxy_win.cpp
index c022c718cf..949f9fe12b 100644
--- a/src/network/kernel/qnetworkproxy_win.cpp
+++ b/src/network/kernel/qnetworkproxy_win.cpp
@@ -288,7 +288,8 @@ static QList<QNetworkProxy> parseServerList(const QNetworkProxyQuery &query, con
QHash<QString, QNetworkProxy> taggedProxies;
const QString requiredTag = query.protocolTag();
// windows tags are only for clients
- bool checkTags = !requiredTag.isEmpty() && query.queryType() != QNetworkProxyQuery::TcpServer
+ bool checkTags = !requiredTag.isEmpty()
+ && query.queryType() != QNetworkProxyQuery::TcpServer
&& query.queryType() != QNetworkProxyQuery::SctpServer;
for (const QString &entry : proxyList) {
int server = 0;
diff --git a/src/network/socket/qnativesocketengine_unix.cpp b/src/network/socket/qnativesocketengine_unix.cpp
index 2a9d600630..d7d7dad8e7 100644
--- a/src/network/socket/qnativesocketengine_unix.cpp
+++ b/src/network/socket/qnativesocketengine_unix.cpp
@@ -915,7 +915,7 @@ qint64 QNativeSocketEnginePrivate::nativeReceiveDatagram(char *data, qint64 maxS
if (recvResult == -1) {
switch (errno) {
-#if EWOULDBLOCK-0 && EWOULDBLOCK != EAGAIN
+#if defined(EWOULDBLOCK) && EWOULDBLOCK != EAGAIN
case EWOULDBLOCK:
#endif
case EAGAIN:
@@ -1105,7 +1105,7 @@ qint64 QNativeSocketEnginePrivate::nativeSendDatagram(const char *data, qint64 l
if (sentBytes < 0) {
switch (errno) {
-#if EWOULDBLOCK-0 && EWOULDBLOCK != EAGAIN
+#if defined(EWOULDBLOCK) && EWOULDBLOCK != EAGAIN
case EWOULDBLOCK:
#endif
case EAGAIN:
diff --git a/src/network/socket/qsctpsocket.cpp b/src/network/socket/qsctpsocket.cpp
index 9ab241f9ab..f65ffa765d 100644
--- a/src/network/socket/qsctpsocket.cpp
+++ b/src/network/socket/qsctpsocket.cpp
@@ -162,8 +162,12 @@ bool QSctpSocketPrivate::canReadNotification()
do {
// Determine the size of the pending datagram.
qint64 bytesToRead = socketEngine->bytesAvailable();
- if (bytesToRead == 0)
+ if (bytesToRead == 0) {
+ // As a corner case, if we can't determine the size of the pending datagram,
+ // try to read 4K of data from the socket. Subsequent ::recvmsg call either
+ // fails or returns the actual length of the datagram.
bytesToRead = 4096;
+ }
Q_ASSERT((datagramSize + int(bytesToRead)) < MaxByteArraySize);
incomingDatagram.resize(datagramSize + int(bytesToRead));
@@ -479,7 +483,7 @@ QNetworkDatagram QSctpSocket::readDatagram()
}
if (d->currentReadChannel >= d->readHeaders.size()
- || (d->readHeaders[d->currentReadChannel].size() == 0)) {
+ || d->readHeaders[d->currentReadChannel].size() == 0) {
Q_ASSERT(d->buffer.isEmpty());
return QNetworkDatagram();
}