diff options
author | Alex Trotsenko <alex1973tr@gmail.com> | 2014-09-24 17:31:33 +0300 |
---|---|---|
committer | Alex Trotsenko <alex1973tr@gmail.com> | 2016-07-27 06:37:24 +0000 |
commit | 75a9bd2a4f637fb8e8e3dc4609a7045547119e80 (patch) | |
tree | 73b8a0a950eb87a7407edada3ea6547f08baf328 /src/network/socket/qudpsocket.cpp | |
parent | c5a4b093d051680bf7f34bb5acff16eea9d4979f (diff) |
Introduce SCTP sockets support
Add protocol-specific code and the QSctpServer, QSctpSocket classes.
Change-Id: Ie9a1d87bd1fda866a2405043d1c15c12ded5a96e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/network/socket/qudpsocket.cpp')
-rw-r--r-- | src/network/socket/qudpsocket.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/network/socket/qudpsocket.cpp b/src/network/socket/qudpsocket.cpp index d78379fb39..37b385dfb5 100644 --- a/src/network/socket/qudpsocket.cpp +++ b/src/network/socket/qudpsocket.cpp @@ -347,6 +347,12 @@ qint64 QUdpSocket::writeDatagram(const char *data, qint64 size, const QHostAddre if (sent >= 0) { emit bytesWritten(sent); } else { + if (sent == -2) { + // Socket engine reports EAGAIN. Treat as a temporary error. + d->setErrorAndEmit(QAbstractSocket::TemporaryError, + tr("Unable to send a datagram")); + return -1; + } d->setErrorAndEmit(d->socketEngine->error(), d->socketEngine->errorString()); } return sent; @@ -495,8 +501,15 @@ qint64 QUdpSocket::readDatagram(char *data, qint64 maxSize, QHostAddress *addres d->hasPendingData = false; d->socketEngine->setReadNotificationEnabled(true); - if (readBytes < 0) + if (readBytes < 0) { + if (readBytes == -2) { + // No pending datagram. Treat as a temporary error. + d->setErrorAndEmit(QAbstractSocket::TemporaryError, + tr("No datagram available for reading")); + return -1; + } d->setErrorAndEmit(d->socketEngine->error(), d->socketEngine->errorString()); + } return readBytes; } |