Ignore SIGPIPE

Handling SIGPIPE made restic abort when a TCP connection was reset by a
server. This happened on DigitalOcean Spaces, which uses the s3 backend.
This commit is contained in:
Alexander Neumann 2017-11-30 21:23:43 +01:00
parent 812ce4bfc4
commit 2579fe6b7b
1 changed files with 3 additions and 5 deletions

View File

@ -25,16 +25,14 @@ func init() {
InstallSignalHandler()
}
// InstallSignalHandler listens for SIGINT and SIGPIPE, and triggers the cleanup handlers.
// InstallSignalHandler listens for SIGINT, and triggers the cleanup handlers.
func InstallSignalHandler() {
signal.Notify(cleanupHandlers.ch, syscall.SIGINT)
signal.Notify(cleanupHandlers.ch, syscall.SIGPIPE)
}
// SuspendSignalHandler removes the signal handler for SIGINT and SIGPIPE.
// SuspendSignalHandler removes the signal handler for SIGINT.
func SuspendSignalHandler() {
signal.Reset(syscall.SIGINT)
signal.Reset(syscall.SIGPIPE)
}
// AddCleanupHandler adds the function f to the list of cleanup handlers so
@ -69,7 +67,7 @@ func RunCleanupHandlers() {
cleanupHandlers.list = nil
}
// CleanupHandler handles the SIGINT and SIGPIPE signals.
// CleanupHandler handles the SIGINT signals.
func CleanupHandler(c <-chan os.Signal) {
for s := range c {
debug.Log("signal %v received, cleaning up", s)