Selaa lähdekoodia

fix attempted null -> string conversion

Grant Limberg 3 viikkoa sitten
vanhempi
commit
20a67ab1de
1 muutettua tiedostoa jossa 11 lisäystä ja 5 poistoa
  1. 11 5
      nonfree/controller/CentralDB.cpp

+ 11 - 5
nonfree/controller/CentralDB.cpp

@@ -680,6 +680,7 @@ void CentralDB::initializeNetworks()
 			std::optional<uint64_t> created_at = std::get<3>(row);
 			std::optional<uint64_t> last_modified = std::get<4>(row);
 			std::optional<uint64_t> revision = std::get<5>(row);
+			std::string frontend = std::get<6>(row);
 
 			config["id"] = nwid;
 			config["name"] = name;
@@ -717,12 +718,17 @@ void CentralDB::initializeNetworks()
 				config["v6AssignMode"]["rfc4193"] = false;
 			}
 			config["ssoEnabled"] = cfgtmp["ssoEnabled"].is_boolean() ? cfgtmp["ssoEnabled"].get<bool>() : false;
+			if (config["ssoConfig"].is_object()) {
+				config["ssoConfig"] = cfgtmp["ssoConfig"];
+			}
+			else {
+				config["ssoConfig"] = empty;
+			}
 			config["objtype"] = "network";
 			config["routes"] = cfgtmp["routes"].is_array() ? cfgtmp["routes"] : json::array();
 			config["clientId"] = cfgtmp["clientId"].is_string() ? cfgtmp["clientId"].get<std::string>() : "";
-			config["authorizationEndpoint"] = cfgtmp["authorizationEndpoint"].is_string()
-												  ? cfgtmp["authorizationEndpoint"].get<std::string>()
-												  : nullptr;
+			config["authorizationEndpoint"] =
+				cfgtmp["authorizationEndpoint"].is_string() ? cfgtmp["authorizationEndpoint"].get<std::string>() : "";
 			config["provider"] = cfgtmp["ssoProvider"].is_string() ? cfgtmp["ssoProvider"].get<std::string>() : "";
 			if (! cfgtmp["dns"].is_object()) {
 				cfgtmp["dns"] = json::object();
@@ -734,7 +740,7 @@ void CentralDB::initializeNetworks()
 			}
 			config["ipAssignmentPools"] =
 				cfgtmp["ipAssignmentPools"].is_array() ? cfgtmp["ipAssignmentPools"] : json::array();
-			config["frontend"] = std::get<6>(row);
+			config["frontend"] = frontend;
 
 			Metrics::network_count++;
 
@@ -742,7 +748,7 @@ void CentralDB::initializeNetworks()
 
 			auto end = std::chrono::high_resolution_clock::now();
 			auto dur = std::chrono::duration_cast<std::chrono::microseconds>(end - start);
-			;
+
 			total += dur.count();
 			++count;
 			if (count > 0 && count % 10000 == 0) {