forked from External/grumble
Handle freeze requests for stopped servers
This commit is contained in:
parent
c6eeabde62
commit
705b43bcd5
1 changed files with 11 additions and 0 deletions
11
server.go
11
server.go
|
|
@ -986,6 +986,17 @@ func (server *Server) userEnterChannel(client *Client, channel *Channel, usersta
|
||||||
// Create a point-in-time snapshot of Server and make it
|
// Create a point-in-time snapshot of Server and make it
|
||||||
// accessible through the returned io.ReadCloser.
|
// accessible through the returned io.ReadCloser.
|
||||||
func (s *Server) FreezeServer() io.ReadCloser {
|
func (s *Server) FreezeServer() io.ReadCloser {
|
||||||
|
if !s.running {
|
||||||
|
fs, err := s.Freeze()
|
||||||
|
if err != nil {
|
||||||
|
log.Panicf("Unable to freeze the server")
|
||||||
|
}
|
||||||
|
fr := &freezeRequest{done:make(chan bool)}
|
||||||
|
go s.handleFreezeRequest(fr, &fs)
|
||||||
|
<-fr.done
|
||||||
|
return fr.readCloser
|
||||||
|
}
|
||||||
|
|
||||||
fr := &freezeRequest{done:make(chan bool)}
|
fr := &freezeRequest{done:make(chan bool)}
|
||||||
s.freezeRequest <- fr
|
s.freezeRequest <- fr
|
||||||
<-fr.done
|
<-fr.done
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue