Skip to content

Commit 4736767

Browse files
committed
more robustifying incoming messages
1 parent 46a8cd7 commit 4736767

File tree

1 file changed

+34
-2
lines changed

1 file changed

+34
-2
lines changed

nonfree/controller/PubSubListener.cpp

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,9 @@ nlohmann::json toJson(const pbmessages::NetworkChange_Network& nc, pbmessages::N
322322
}
323323
out["capabilities"] = OSUtils::jsonParse(caps);
324324
}
325+
else {
326+
out["capabilities"] = "[]";
327+
}
325328
out["mtu"] = nc.mtu();
326329
out["multicastLimit"] = nc.multicast_limit();
327330
out["private"] = nc.is_private();
@@ -342,7 +345,12 @@ nlohmann::json toJson(const pbmessages::NetworkChange_Network& nc, pbmessages::N
342345
out["rules"] = OSUtils::jsonParse(rules);
343346
}
344347
}
348+
else {
349+
out["rules"] = "[]";
350+
}
351+
345352
out["rulesSource"] = nc.rules_source();
353+
346354
if (nc.has_tags()) {
347355
std::string tags = nc.tags();
348356
if (tags == "[]") {
@@ -498,14 +506,38 @@ nlohmann::json toJson(const pbmessages::MemberChange_Member& mc, pbmessages::Mem
498506
out["noAutoAssignIps"] = mc.no_auto_assign_ips();
499507
out["ssoExempt"] = mc.sso_exempt();
500508
out["authenticationExpiryTime"] = mc.auth_expiry_time();
501-
out["capabilities"] = OSUtils::jsonParse(mc.capabilities());
509+
if (mc.has_capabilities()) {
510+
std::string caps = mc.capabilities();
511+
if (caps == "null") {
512+
out["capabilities"] = "[]";
513+
}
514+
else {
515+
out["capabilities"] = OSUtils::jsonParse(caps);
516+
}
517+
}
518+
else {
519+
out["capabilities"] = "[]";
520+
}
502521
out["creationTime"] = mc.creation_time();
503522
out["identity"] = mc.identity();
504523
out["lastAuthorizedTime"] = mc.last_authorized_time();
505524
out["lastDeauthorizedTime"] = mc.last_deauthorized_time();
506525
out["remoteTraceLevel"] = mc.remote_trace_level();
507526
out["revision"] = mc.revision();
508-
out["tags"] = OSUtils::jsonParse(mc.tags());
527+
528+
if (mc.has_tags()) {
529+
std::string tags = mc.tags();
530+
if (tags == "[]") {
531+
out["tags"] = "[]";
532+
}
533+
else {
534+
out["tags"] = OSUtils::jsonParse(tags);
535+
}
536+
}
537+
else {
538+
out["tags"] = "[]";
539+
}
540+
509541
out["versionMajor"] = mc.version_major();
510542
out["versionMinor"] = mc.version_minor();
511543
out["versionRev"] = mc.version_rev();

0 commit comments

Comments
 (0)