summaryrefslogtreecommitdiffstats
path: root/src/bluetooth/qbluetoothsocket_bluez.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bluetooth/qbluetoothsocket_bluez.cpp')
-rw-r--r--src/bluetooth/qbluetoothsocket_bluez.cpp42
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;
}
}