mirror of
https://github.com/drakkan/sftpgo.git
synced 2025-12-07 14:50:55 +03:00
Add support for graceful shutdown
Fixes #1014 Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
This commit is contained in:
@@ -1362,6 +1362,9 @@ func (c *BaseConnection) GetGenericError(err error) error {
|
||||
if err == vfs.ErrStorageSizeUnavailable {
|
||||
return fmt.Errorf("%w: %v", sftp.ErrSSHFxOpUnsupported, err.Error())
|
||||
}
|
||||
if err == ErrShuttingDown {
|
||||
return fmt.Errorf("%w: %v", sftp.ErrSSHFxFailure, err.Error())
|
||||
}
|
||||
if err != nil {
|
||||
if e, ok := err.(*os.PathError); ok {
|
||||
c.Log(logger.LevelError, "generic path error: %+v", e)
|
||||
@@ -1373,7 +1376,7 @@ func (c *BaseConnection) GetGenericError(err error) error {
|
||||
return sftp.ErrSSHFxFailure
|
||||
default:
|
||||
if err == ErrPermissionDenied || err == ErrNotExist || err == ErrOpUnsupported ||
|
||||
err == ErrQuotaExceeded || err == vfs.ErrStorageSizeUnavailable {
|
||||
err == ErrQuotaExceeded || err == vfs.ErrStorageSizeUnavailable || err == ErrShuttingDown {
|
||||
return err
|
||||
}
|
||||
return ErrGenericFailure
|
||||
@@ -1406,6 +1409,10 @@ func (c *BaseConnection) GetFsAndResolvedPath(virtualPath string) (vfs.Fs, strin
|
||||
return nil, "", err
|
||||
}
|
||||
|
||||
if isShuttingDown.Load() {
|
||||
return nil, "", c.GetFsError(fs, ErrShuttingDown)
|
||||
}
|
||||
|
||||
fsPath, err := fs.ResolvePath(virtualPath)
|
||||
if err != nil {
|
||||
return nil, "", c.GetFsError(fs, err)
|
||||
|
||||
Reference in New Issue
Block a user