commit 59f62ae314ddabd84a2dbf8f794e3601846e67b7
parent 34de7171fea1161f70239e9e1bf5b4dc3eb15720
Author: Natasha Kerensikova <natgh@instinctive.eu>
Date: Tue, 16 Sep 2025 18:45:29 +0000
State cleaning
Diffstat:
1 file changed, 18 insertions(+), 0 deletions(-)
diff --git a/natsbot.go b/natsbot.go
@@ -110,6 +110,7 @@ func Loop(cb NatsBot, mainScript string, capacity int) {
}
}
+ stateClean(L)
log.Println("natsbot finished")
}
@@ -202,6 +203,23 @@ func registerState(L *lua.LState, evtChan chan *internalEvent, msgChan chan *nat
stateSet(L, st)
}
+func stateClean(L *lua.LState) {
+ _, connIdx := stateConnTable(L)
+
+ st := stateGet(L)
+ L.RawSetInt(st, keyConnTable, newConnTbl(L))
+ L.RawSetInt(st, keySubsTable, newSubsTbl(L))
+
+ for nc := range connIdx {
+ nc.SetClosedHandler(nil)
+ nc.SetDisconnectErrHandler(nil)
+ nc.SetDiscoveredServersHandler(nil)
+ nc.SetErrorHandler(nil)
+ nc.SetReconnectHandler(nil)
+ nc.Close()
+ }
+}
+
func stateUncheckedGet(L *lua.LState) *lua.LTable {
v := L.GetField(L.Get(lua.RegistryIndex), luaStateName)
if result, ok := v.(*lua.LTable); ok {