diff options
author | Simon Ser <contact@emersion.fr> | 2020-01-10 17:00:34 +0100 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2020-01-10 17:00:34 +0100 |
commit | b014c1898fef294a58178c5d82266d6b24774f8d (patch) | |
tree | c0e0ff616fcc7619d642ddb20e1cf01b77c9fd3e /server.go | |
parent | 171da5128963aec5d51ffb6a50777eb3eb8c4407 (diff) | |
download | alps-b014c1898fef294a58178c5d82266d6b24774f8d.tar.gz alps-b014c1898fef294a58178c5d82266d6b24774f8d.zip |
Close Lua plugins on reload
Diffstat (limited to 'server.go')
-rw-r--r-- | server.go | 13 |
1 files changed, 11 insertions, 2 deletions
@@ -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 { |