diff --git a/bubble-server/src/main/java/bubble/resources/stream/FilterHttpResource.java b/bubble-server/src/main/java/bubble/resources/stream/FilterHttpResource.java index 5edbf382..34ba0077 100644 --- a/bubble-server/src/main/java/bubble/resources/stream/FilterHttpResource.java +++ b/bubble-server/src/main/java/bubble/resources/stream/FilterHttpResource.java @@ -90,6 +90,8 @@ public class FilterHttpResource { @Autowired private BlockStatsService blockStats; @Autowired private StandardFlexRouterService flexRouterService; + private static final Response NO_FLEX_ROUTER = OK_EMPTY_LIST; + private static final long ACTIVE_REQUEST_TIMEOUT = HOURS.toSeconds(12); @Getter(lazy=true) private final RedisService activeRequestCache = redis.prefixNamespace(getClass().getSimpleName()+".requests"); @@ -638,20 +640,25 @@ public class FilterHttpResource { @Produces(APPLICATION_JSON) public Response getFlexRouter(@Context Request req, @Context ContainerRequest ctx) { - final String vpnIp = getRemoteAddr(req); - final Device device = deviceService.findDeviceByIp(vpnIp); + final String publicIp = getRemoteAddr(req); + final Device device = deviceService.findDeviceByIp(publicIp); if (device == null) { - log.warn("getFlexRouters: device not found: "+vpnIp); - return ok(Collections.emptySet()); + log.warn("getFlexRouter: device not found with IP: "+publicIp); + return NO_FLEX_ROUTER; } - if (log.isDebugEnabled()) log.debug("getFlexRouters: finding routers for vpnIp="+vpnIp); final DeviceStatus deviceStatus = deviceService.getDeviceStatus(device.getUuid()); - final String publicIp = deviceStatus.getIp(); + if (!deviceStatus.hasIp()) { + log.error("getFlexRouter: no device status for device: "+device); + return NO_FLEX_ROUTER; + } + final String vpnIp = deviceStatus.getIp(); + + if (log.isDebugEnabled()) log.debug("getFlexRouter: finding routers for vpnIp="+vpnIp); Collection routers = flexRouterService.selectClosestRouter(device.getAccount(), vpnIp, publicIp); - if (log.isDebugEnabled()) log.debug("getFlexRouters: found router(s) for vpnIp="+vpnIp+": "+json(routers)); - if (routers.isEmpty()) return ok(Collections.emptySet()); + if (log.isDebugEnabled()) log.debug("getFlexRouter: found router(s) for vpnIp="+vpnIp+": "+json(routers, COMPACT_MAPPER)); + if (routers.isEmpty()) return NO_FLEX_ROUTER; return ok(routers.iterator().next().initAuth()); } diff --git a/bubble-server/src/main/resources/db/migration/V2020090501__add_flex_router.sql b/bubble-server/src/main/resources/db/migration/V2020090801__add_flex_router.sql similarity index 100% rename from bubble-server/src/main/resources/db/migration/V2020090501__add_flex_router.sql rename to bubble-server/src/main/resources/db/migration/V2020090801__add_flex_router.sql diff --git a/bubble-server/src/main/resources/messages b/bubble-server/src/main/resources/messages index d97340e3..74c7c7f2 160000 --- a/bubble-server/src/main/resources/messages +++ b/bubble-server/src/main/resources/messages @@ -1 +1 @@ -Subproject commit d97340e367e1b15ab71dc1ccd564af3a0dc7a361 +Subproject commit 74c7c7f2efa41dd12d74cffff5013149136d3867 diff --git a/bubble-web b/bubble-web index 63128400..2d0df5ec 160000 --- a/bubble-web +++ b/bubble-web @@ -1 +1 @@ -Subproject commit 631284006bb691d3d6d88aa2c3544ebc6cfa2893 +Subproject commit 2d0df5ecd846bc81f72d37ec385ed8b46ae17fd9 diff --git a/utils/cobbzilla-wizard b/utils/cobbzilla-wizard index 416d45b5..f57899c2 160000 --- a/utils/cobbzilla-wizard +++ b/utils/cobbzilla-wizard @@ -1 +1 @@ -Subproject commit 416d45b5ba87b5c798b2940f0bf357461c3a43c0 +Subproject commit f57899c2022b6dcf6d991fe4a1b0c748ca3a56b3