code: func (srv *Server) Serve(l net.Listener) error {
  	srv.ensureHandlers()
  	defer l.Close()
  	if err := srv.ensureHostSigner(); err != nil {
  		return err
  	}
  	if srv.Handler == nil {
  		srv.Handler = DefaultHandler
  	}
  	if srv.channelHandlers == nil {
  		srv.channelHandlers = map[string]channelHandler{
  			"session":      sessionHandler,
  			"direct-tcpip": directTcpipHandler,
  		}
  	}
  	var tempDelay time.Duration
  
  	srv.trackListener(l, true)
  	defer srv.trackListener(l, false)
  	for {
  		conn, e := l.Accept()
  		if e != nil {
  			select {
  			case <-srv.getDoneChan():
  				return ErrServerClosed
  			default:
  			}
  			if ne, ok := e.(net.Error); ok && ne.Temporary() {
  				if tempDelay == 0 {
  					tempDelay = 5 * time.Millisecond
  				} else {
  					tempDelay *= 2
  				}
  				if max := 1 * time.Second; tempDelay > max {
  					tempDelay = max
  				}
  				time.Sleep(tempDelay)
  				continue
  			}
  			return e
  		}
  		go srv.handleConn(conn)
  	}
  }
docs: // Serve accepts incoming connections on the Listener l, creating a new
  // connection goroutine for each. The connection goroutines read requests and then
  // calls srv.Handler to handle sessions.
  //
  // Serve always returns a non-nil error.