Don't abort entire boot process due to one bad server egg; closes pterodactyl/panel#2448

This commit is contained in:
Dane Everitt
2020-10-17 12:06:47 -07:00
parent ad1ed0f24a
commit 947279a07c
6 changed files with 34 additions and 26 deletions

View File

@@ -14,7 +14,7 @@ import (
type Metadata struct {
Image string
Stop *api.ProcessStopConfiguration
Stop api.ProcessStopConfiguration
}
// Ensure that the Docker environment is always implementing all of the methods
@@ -171,7 +171,7 @@ func (e *Environment) Config() *environment.Configuration {
}
// Sets the stop configuration for the environment.
func (e *Environment) SetStopConfiguration(c *api.ProcessStopConfiguration) {
func (e *Environment) SetStopConfiguration(c api.ProcessStopConfiguration) {
e.mu.Lock()
e.meta.Stop = c
e.mu.Unlock()

View File

@@ -126,8 +126,8 @@ func (e *Environment) Stop() error {
s := e.meta.Stop
e.mu.RUnlock()
if s == nil || s.Type == api.ProcessStopSignal {
if s == nil {
if s.Type == "" || s.Type == api.ProcessStopSignal {
if s.Type == "" {
log.WithField("container_id", e.Id).Warn("no stop configuration detected for environment, using termination procedure")
}

View File

@@ -33,13 +33,11 @@ func (e *Environment) SendCommand(c string) error {
e.mu.RLock()
defer e.mu.RUnlock()
if e.meta.Stop != nil {
// If the command being processed is the same as the process stop command then we want to mark
// the server as entering the stopping state otherwise the process will stop and Wings will think
// it has crashed and attempt to restart it.
if e.meta.Stop.Type == "command" && c == e.meta.Stop.Value {
e.Events().Publish(environment.StateChangeEvent, environment.ProcessStoppingState)
}
// If the command being processed is the same as the process stop command then we want to mark
// the server as entering the stopping state otherwise the process will stop and Wings will think
// it has crashed and attempt to restart it.
if e.meta.Stop.Type == "command" && c == e.meta.Stop.Value {
e.Events().Publish(environment.StateChangeEvent, environment.ProcessStoppingState)
}
_, err := e.stream.Conn.Write([]byte(c + "\n"))