code: func (s *Server) resetSessionTimer(id string, session *structs.Session) error {
  	// Fault the session in if not given
  	if session == nil {
  		state := s.fsm.State()
  		_, s, err := state.SessionGet(nil, id)
  		if err != nil {
  			return err
  		}
  		if s == nil {
  			return fmt.Errorf("Session '%s' not found", id)
  		}
  		session = s
  	}
  
  	// Bail if the session has no TTL, fast-path some common inputs
  	switch session.TTL {
  	case "", "0", "0s", "0m", "0h":
  		return nil
  	}
  
  	// Parse the TTL, and skip if zero time
  	ttl, err := time.ParseDuration(session.TTL)
  	if err != nil {
  		return fmt.Errorf("Invalid Session TTL '%s': %v", session.TTL, err)
  	}
  	if ttl == 0 {
  		return nil
  	}
  
  	s.createSessionTimer(session.ID, ttl)
  	return nil
  }
docs: // resetSessionTimer is used to renew the TTL of a session.
  // This can be used for new sessions and existing ones. A session
  // will be faulted in if not given.