From b014c1898fef294a58178c5d82266d6b24774f8d Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Fri, 10 Jan 2020 17:00:34 +0100 Subject: [PATCH] Close Lua plugins on reload --- server.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/server.go b/server.go index 71a891b..473d889 100644 --- a/server.go +++ b/server.go @@ -18,8 +18,9 @@ type Server struct { e *echo.Echo Sessions *SessionManager - mutex sync.RWMutex // used for server reload - plugins []Plugin + mutex sync.RWMutex // used for server reload + plugins []Plugin + luaPlugins []Plugin imap struct { host string @@ -98,7 +99,15 @@ func (s *Server) load() error { s.mutex.Lock() defer s.mutex.Unlock() + // Close previous Lua plugins + for _, p := range s.luaPlugins { + if err := p.Close(); err != nil { + s.e.Logger.Printf("Failed to unload plugin '%v': %v", p.Name(), err) + } + } + s.plugins = plugins + s.luaPlugins = luaPlugins s.e.Renderer = renderer for _, p := range plugins {