diff options
Diffstat (limited to 'src/bluetooth/qbluetoothsocket_bluez.cpp')
-rw-r--r-- | src/bluetooth/qbluetoothsocket_bluez.cpp | 42 |
1 files changed, 17 insertions, 25 deletions
diff --git a/src/bluetooth/qbluetoothsocket_bluez.cpp b/src/bluetooth/qbluetoothsocket_bluez.cpp index 58662d5b..7b1046c4 100644 --- a/src/bluetooth/qbluetoothsocket_bluez.cpp +++ b/src/bluetooth/qbluetoothsocket_bluez.cpp @@ -67,6 +67,7 @@ QBluetoothSocketPrivate::QBluetoothSocketPrivate() : socket(-1), socketType(QBluetoothServiceInfo::UnknownProtocol), state(QBluetoothSocket::UnconnectedState), + socketError(QBluetoothSocket::NoSocketError), readNotifier(0), connectWriteNotifier(0), connecting(false), @@ -165,7 +166,7 @@ void QBluetoothSocketPrivate::connectToService(const QBluetoothAddress &address, connecting = true; q->setSocketState(QBluetoothSocket::ConnectingState); } else { - errorString = QString::fromLocal8Bit(strerror(errno)); + errorString = qt_error_string(errno); q->setSocketError(QBluetoothSocket::UnknownSocketError); } } @@ -178,8 +179,8 @@ void QBluetoothSocketPrivate::_q_writeNotify() len = sizeof(errorno); ::getsockopt(socket, SOL_SOCKET, SO_ERROR, &errorno, (socklen_t*)&len); if(errorno) { - errorString = QString::fromLocal8Bit(strerror(errorno)); - emit q->error(QBluetoothSocket::UnknownSocketError); + errorString = qt_error_string(errorno); + q->setSocketError(QBluetoothSocket::UnknownSocketError); return; } @@ -196,13 +197,12 @@ void QBluetoothSocketPrivate::_q_writeNotify() } char buf[1024]; - Q_Q(QBluetoothSocket); int size = txBuffer.read(buf, 1024); if (::write(socket, buf, size) != size) { - socketError = QBluetoothSocket::NetworkError; - emit q->error(socketError); + errorString = QBluetoothSocket::tr("Network error"); + q->setSocketError(QBluetoothSocket::NetworkError); } else { emit q->bytesWritten(size); @@ -230,12 +230,12 @@ void QBluetoothSocketPrivate::_q_readNotify() int errsv = errno; readNotifier->setEnabled(false); connectWriteNotifier->setEnabled(false); - errorString = QString::fromLocal8Bit(strerror(errsv)); + errorString = qt_error_string(errsv); qCWarning(QT_BT_BLUEZ) << Q_FUNC_INFO << socket << "error:" << readFromDevice << errorString; if(errsv == EHOSTDOWN) - emit q->error(QBluetoothSocket::HostNotFoundError); + q->setSocketError(QBluetoothSocket::HostNotFoundError); else - emit q->error(QBluetoothSocket::UnknownSocketError); + q->setSocketError(QBluetoothSocket::UnknownSocketError); q->disconnectFromService(); q->setSocketState(QBluetoothSocket::UnconnectedState); @@ -258,6 +258,7 @@ void QBluetoothSocketPrivate::abort() // we don't call disconnectFromService or // QBluetoothSocket::close QT_CLOSE(socket); + socket = -1; Q_Q(QBluetoothSocket); emit q->disconnected(); @@ -265,9 +266,6 @@ void QBluetoothSocketPrivate::abort() QString QBluetoothSocketPrivate::localName() const { - if (!m_localName.isEmpty()) - return m_localName; - const QBluetoothAddress address = localAddress(); if (address.isNull()) return QString(); @@ -288,9 +286,7 @@ QString QBluetoothSocketPrivate::localName() const if (properties.isError()) return QString(); - m_localName = properties.value().value(QLatin1String("Name")).toString(); - - return m_localName; + return properties.value().value(QLatin1String("Name")).toString(); } QBluetoothAddress QBluetoothSocketPrivate::localAddress() const @@ -339,9 +335,6 @@ quint16 QBluetoothSocketPrivate::localPort() const QString QBluetoothSocketPrivate::peerName() const { - if (!m_peerName.isEmpty()) - return m_peerName; - quint64 bdaddr; if (socketType == QBluetoothServiceInfo::RfcommProtocol) { @@ -361,7 +354,7 @@ QString QBluetoothSocketPrivate::peerName() const convertAddress(addr.l2_bdaddr.b, bdaddr); } else { - qCWarning(QT_BT_BLUEZ) << "peerName() called on socket of known type"; + qCWarning(QT_BT_BLUEZ) << "peerName() called on socket of unknown type"; return QString(); } @@ -399,9 +392,7 @@ QString QBluetoothSocketPrivate::peerName() const if (properties.isError()) return QString(); - m_peerName = properties.value().value(QLatin1String("Alias")).toString(); - - return m_peerName; + return properties.value().value(QLatin1String("Alias")).toString(); } QBluetoothAddress QBluetoothSocketPrivate::peerAddress() const @@ -453,8 +444,8 @@ qint64 QBluetoothSocketPrivate::writeData(const char *data, qint64 maxSize) Q_Q(QBluetoothSocket); if (q->openMode() & QIODevice::Unbuffered) { if (::write(socket, data, maxSize) != maxSize) { - socketError = QBluetoothSocket::NetworkError; - emit q->error(socketError); + errorString = QBluetoothSocket::tr("Network error"); + q->setSocketError(QBluetoothSocket::NetworkError); } emit q->bytesWritten(maxSize); @@ -510,7 +501,8 @@ void QBluetoothSocketPrivate::close() // We are disconnected now, so go to unconnected. q->setSocketState(QBluetoothSocket::UnconnectedState); emit q->disconnected(); - ::close(socket); + QT_CLOSE(socket); + socket = -1; } } |