Add a bit of defence checks as to minimise exception likelihood when no medium is known

Summary:
^

Changelog: Minimises the probability of throwing an exception if no exchange medium is known

Reviewed By: passy

Differential Revision: D33620655

fbshipit-source-id: e03e7fed0607c376add218ee98dcd2bd0f8880f1
This commit is contained in:
Lorenzo Blasa
2022-01-17 09:56:36 -08:00
committed by Facebook GitHub Bot
parent 434ee17975
commit 7579b81b97

View File

@@ -114,9 +114,16 @@ std::string ConnectionContextStore::getDeviceId() {
folly::Optional<FlipperCertificateExchangeMedium> folly::Optional<FlipperCertificateExchangeMedium>
ConnectionContextStore::getLastKnownMedium() { ConnectionContextStore::getLastKnownMedium() {
try { try {
std::string config = auto configurationFilePath = absoluteFilePath(CONNECTION_CONFIG_FILE);
loadStringFromFile(absoluteFilePath(CONNECTION_CONFIG_FILE)); if (!fileExists(configurationFilePath)) {
auto maybeMedium = folly::parseJson(config)["medium"]; return folly::none;
}
std::string data = loadStringFromFile(configurationFilePath);
auto config = folly::parseJson(data);
if (config.count("medium") == 0) {
return folly::none;
}
auto maybeMedium = config["medium"];
return maybeMedium.isInt() return maybeMedium.isInt()
? folly::Optional<FlipperCertificateExchangeMedium>{static_cast< ? folly::Optional<FlipperCertificateExchangeMedium>{static_cast<
FlipperCertificateExchangeMedium>(maybeMedium.getInt())} FlipperCertificateExchangeMedium>(maybeMedium.getInt())}