diff --git a/libraries/networking/src/udt/Socket.cpp b/libraries/networking/src/udt/Socket.cpp index 7e1ab02a76..2d99f3649b 100644 --- a/libraries/networking/src/udt/Socket.cpp +++ b/libraries/networking/src/udt/Socket.cpp @@ -239,15 +239,24 @@ qint64 Socket::writeDatagram(const QByteArray& datagram, const HifiSockAddr& soc int pending = _udpSocket.bytesToWrite(); if (bytesWritten < 0 || pending) { int wsaError = 0; + static std::atomic previousWsaError (0); #ifdef WIN32 wsaError = WSAGetLastError(); #endif - qCDebug(networking) << "udt::writeDatagram (" << _udpSocket.state() << sockAddr << ") error - " << wsaError << _udpSocket.error() << "(" << _udpSocket.errorString() << ")" + QString errorString; + QDebug(&errorString) << "udt::writeDatagram (" << _udpSocket.state() << sockAddr << ") error - " + << wsaError << _udpSocket.error() << "(" << _udpSocket.errorString() << ")" << (pending ? "pending bytes:" : "pending:") << pending; + + if (previousWsaError.exchange(wsaError) != wsaError) { + qCDebug(networking).noquote() << errorString; #ifdef DEBUG_EVENT_QUEUE - int nodeListQueueSize = ::hifi::qt::getEventQueueSize(thread()); - qCDebug(networking) << "Networking queue size - " << nodeListQueueSize << "writing datagram to" << sockAddr; -#endif // DEBUG_EVENT_QUEUE + int nodeListQueueSize = ::hifi::qt::getEventQueueSize(thread()); + qCDebug(networking) << "Networking queue size - " << nodeListQueueSize << "writing datagram to" << sockAddr; +#endif // DEBUG_EVENT_QUEUE + } else { + HIFI_FCDEBUG(networking(), errorString.toLatin1().constData()); + } } return bytesWritten; @@ -525,16 +534,25 @@ std::vector Socket::getConnectionSockAddrs() { void Socket::handleSocketError(QAbstractSocket::SocketError socketError) { int wsaError = 0; + static std::atomic previousWsaError(0); #ifdef WIN32 wsaError = WSAGetLastError(); #endif int pending = _udpSocket.bytesToWrite(); - qCDebug(networking) << "udt::Socket (" << _udpSocket.state() << ") error - " << wsaError << socketError << "(" << _udpSocket.errorString() << ")" - << (pending ? "pending bytes:" : "pending:") << pending; + QString errorString; + QDebug(&errorString) << "udt::Socket (" << _udpSocket.state() << ") error - " << wsaError << socketError << + "(" << _udpSocket.errorString() << ")" << (pending ? "pending bytes:" : "pending:") + << pending; + + if (previousWsaError.exchange(wsaError) != wsaError) { + qCDebug(networking).noquote() << errorString; #ifdef DEBUG_EVENT_QUEUE - int nodeListQueueSize = ::hifi::qt::getEventQueueSize(thread()); - qCDebug(networking) << "Networking queue size - " << nodeListQueueSize; -#endif // DEBUG_EVENT_QUEUE + int nodeListQueueSize = ::hifi::qt::getEventQueueSize(thread()); + qCDebug(networking) << "Networking queue size - " << nodeListQueueSize; +#endif // DEBUG_EVENT_QUEUE + } else { + HIFI_FCDEBUG(networking(), errorString.toLatin1().constData()); + } } void Socket::handleStateChanged(QAbstractSocket::SocketState socketState) {