aboutsummaryrefslogtreecommitdiff
path: root/server.go
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2020-01-10 17:00:34 +0100
committerSimon Ser <contact@emersion.fr>2020-01-10 17:00:34 +0100
commitb014c1898fef294a58178c5d82266d6b24774f8d (patch)
treec0e0ff616fcc7619d642ddb20e1cf01b77c9fd3e /server.go
parent171da5128963aec5d51ffb6a50777eb3eb8c4407 (diff)
downloadalps-b014c1898fef294a58178c5d82266d6b24774f8d.tar.gz
alps-b014c1898fef294a58178c5d82266d6b24774f8d.zip
Close Lua plugins on reload
Diffstat (limited to 'server.go')
-rw-r--r--server.go13
1 files 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 {