Merge PR #10: Improve AP error handling a bit
This commit is contained in:
commit
73042564b8
@ -427,14 +427,41 @@ void WirelessService::commandStartAccessPoint(const QVariantMap &request)
|
|||||||
}
|
}
|
||||||
|
|
||||||
QVariantMap parameters = request.value("p").toMap();
|
QVariantMap parameters = request.value("p").toMap();
|
||||||
if (!parameters.contains("e") || !parameters.contains("p")) {
|
if (!parameters.contains("e")) {
|
||||||
qCWarning(dcNetworkManagerBluetoothServer()) << "WirelessService: Start access point command: Invalid parameters.";
|
qCWarning(dcNetworkManagerBluetoothServer()) << "WirelessService: Missing ESSID (e) parameter.";
|
||||||
streamData(createResponse(WirelessServiceCommandStartAccessPoint, WirelessServiceResponseIvalidParameters));
|
streamData(createResponse(WirelessServiceCommandStartAccessPoint, WirelessServiceResponseIvalidParameters));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_networkManager->startAccessPoint(m_device->interface(), parameters.value("e").toString(), parameters.value("p").toString());
|
QString essid = parameters.value("e").toString();
|
||||||
streamData(createResponse(WirelessServiceCommandStartAccessPoint));
|
if (essid.length() > 32) {
|
||||||
|
qCWarning(dcNetworkManagerBluetoothServer()) << "WirelessService: Invalid ESSID (e) parameter.";
|
||||||
|
streamData(createResponse(WirelessServiceCommandStartAccessPoint, WirelessServiceResponseIvalidParameters));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!parameters.contains("p")) {
|
||||||
|
qCWarning(dcNetworkManagerBluetoothServer()) << "WirelessService: Missing passkey (p) parameter.";
|
||||||
|
streamData(createResponse(WirelessServiceCommandStartAccessPoint, WirelessServiceResponseIvalidParameters));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString passkey = parameters.value("p").toString();
|
||||||
|
if (passkey.length() < 8 || passkey.length() > 64) {
|
||||||
|
qCWarning(dcNetworkManagerBluetoothServer()) << "WirelessService: Invalid passkey (p) parameter.";
|
||||||
|
streamData(createResponse(WirelessServiceCommandStartAccessPoint, WirelessServiceResponseIvalidParameters));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
NetworkManager::NetworkManagerError status = m_networkManager->startAccessPoint(m_device->interface(), essid, passkey);
|
||||||
|
if (status != NetworkManager::NetworkManagerErrorNoError) {
|
||||||
|
qCWarning(dcNetworkManagerBluetoothServer()) << "Failed to start the access point:" << status;
|
||||||
|
// FIXME: Add more error codes so that we can actually report this failure to the client
|
||||||
|
streamData(createResponse(WirelessServiceCommandStartAccessPoint, WirelessServiceResponseUnknownError));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
streamData(createResponse(WirelessServiceCommandStartAccessPoint, WirelessServiceResponseSuccess));
|
||||||
}
|
}
|
||||||
|
|
||||||
void WirelessService::characteristicChanged(const QLowEnergyCharacteristic &characteristic, const QByteArray &value)
|
void WirelessService::characteristicChanged(const QLowEnergyCharacteristic &characteristic, const QByteArray &value)
|
||||||
|
|||||||
Reference in New Issue
Block a user