From d37ce505f560ecfbba1166260a44fa20a304a989 Mon Sep 17 00:00:00 2001 From: tidwall Date: Thu, 1 Apr 2021 14:59:12 -0700 Subject: [PATCH] Allow for all command types for roaming event Prior to this commit roaming geofences only registered changes to the SET command. Now it will work for SET/DEL/FSET, just like non-roaming geofences. To opt out of these events, explicitly choose which event you would like to register when you create the geofences. For example: NEARBY fleet FENCE COMMANDS set,del ROAM fleet * 5000 Will only fire off events from SET and DEL command. Closes #597 --- internal/server/fence.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/internal/server/fence.go b/internal/server/fence.go index 6cf11faf..fcba97f9 100644 --- a/internal/server/fence.go +++ b/internal/server/fence.go @@ -99,9 +99,9 @@ func fenceMatch( roamNearbys, roamFaraways = fenceMatchRoam(sw.s, fence, details.id, details.oldObj, details.obj) - } - if len(roamNearbys) == 0 && len(roamFaraways) == 0 { - return nil + if len(roamNearbys) == 0 && len(roamFaraways) == 0 { + return nil + } } detect = "roam" } else { @@ -235,6 +235,12 @@ func fenceMatch( case "roam": if len(msgs) > 0 { var nmsgs []string + for _, msg := range msgs { + cmd := gjson.Get(msg, "command") + if cmd.Exists() && cmd.String() != "set" { + nmsgs = append(nmsgs, msg) + } + } for i := range roamNearbys { nmsg := extendRoamMessage(sw, fence, "nearby", msgs[0], roamNearbys[i])