mirror of
https://github.com/aler9/rtsp-simple-server
synced 2025-12-24 11:51:18 +08:00
This commit is contained in:
@@ -1010,15 +1010,31 @@ func (p *Core) closeResources(newConf *conf.Conf, calledByAPI bool) {
|
||||
}
|
||||
|
||||
if closeLogger && p.logger != nil {
|
||||
p.logger.Close()
|
||||
if newConf == nil {
|
||||
p.logger.Close()
|
||||
}
|
||||
p.logger = nil
|
||||
}
|
||||
}
|
||||
|
||||
func (p *Core) reloadConf(newConf *conf.Conf, calledByAPI bool) error {
|
||||
oldLogger := p.logger
|
||||
|
||||
p.closeResources(newConf, calledByAPI)
|
||||
|
||||
p.conf = newConf
|
||||
return p.createResources(false)
|
||||
|
||||
err := p.createResources(false)
|
||||
if err != nil {
|
||||
p.logger = oldLogger
|
||||
return err
|
||||
}
|
||||
|
||||
if p.logger != oldLogger {
|
||||
oldLogger.Close()
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// APIConfigSet is called by api.
|
||||
|
||||
@@ -132,3 +132,23 @@ func TestCoreHotReloading(t *testing.T) {
|
||||
defer conn.Close()
|
||||
}()
|
||||
}
|
||||
|
||||
func TestCoreHotReloadingAndLoggerError(t *testing.T) {
|
||||
confPath := filepath.Join(os.TempDir(), "rtsp-conf")
|
||||
|
||||
err := os.WriteFile(confPath, []byte(""),
|
||||
0o644)
|
||||
require.NoError(t, err)
|
||||
defer os.Remove(confPath)
|
||||
|
||||
p, ok := New([]string{confPath})
|
||||
require.Equal(t, true, ok)
|
||||
defer p.Close()
|
||||
|
||||
err = os.WriteFile(confPath, []byte("logDestinations: [file]\n"+
|
||||
"logFile: /nonexisting/nonexist\n"),
|
||||
0o644)
|
||||
require.NoError(t, err)
|
||||
|
||||
p.Wait()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user