code.gitea.io/gitea@v1.19.3/modules/ssh/ssh_graceful.go (about)

     1  // Copyright 2019 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package ssh
     5  
     6  import (
     7  	"code.gitea.io/gitea/modules/graceful"
     8  	"code.gitea.io/gitea/modules/log"
     9  	"code.gitea.io/gitea/modules/setting"
    10  
    11  	"github.com/gliderlabs/ssh"
    12  )
    13  
    14  func listen(server *ssh.Server) {
    15  	gracefulServer := graceful.NewServer("tcp", server.Addr, "SSH")
    16  	gracefulServer.PerWriteTimeout = setting.SSH.PerWriteTimeout
    17  	gracefulServer.PerWritePerKbTimeout = setting.SSH.PerWritePerKbTimeout
    18  
    19  	err := gracefulServer.ListenAndServe(server.Serve, setting.SSH.UseProxyProtocol)
    20  	if err != nil {
    21  		select {
    22  		case <-graceful.GetManager().IsShutdown():
    23  			log.Critical("Failed to start SSH server: %v", err)
    24  		default:
    25  			log.Fatal("Failed to start SSH server: %v", err)
    26  		}
    27  	}
    28  	log.Info("SSH Listener: %s Closed", server.Addr)
    29  }
    30  
    31  // builtinUnused informs our cleanup routine that we will not be using a ssh port
    32  func builtinUnused() {
    33  	graceful.GetManager().InformCleanup()
    34  }