code: func (s *Server) serve() error {
  	defer s.Listener.Close()
  
  	if s.Handler == nil {
  		Logger.Panicln("No LDAP Request Handler defined")
  	}
  
  	i := 0
  
  	for {
  		select {
  		case <-s.chDone:
  			Logger.Print("Stopping server")
  			s.Listener.Close()
  			return nil
  		default:
  		}
  
  		rw, err := s.Listener.Accept()
  
  		if s.ReadTimeout != 0 {
  			rw.SetReadDeadline(time.Now().Add(s.ReadTimeout))
  		}
  		if s.WriteTimeout != 0 {
  			rw.SetWriteDeadline(time.Now().Add(s.WriteTimeout))
  		}
  		if nil != err {
  			if opErr, ok := err.(*net.OpError); ok && opErr.Timeout() {
  				continue
  			}
  			Logger.Println(err)
  		}
  
  		cli, err := s.newClient(rw)
  
  		if err != nil {
  			continue
  		}
  
  		i = i + 1
  		cli.Numero = i
  		Logger.Printf("Connection client [%d] from %s accepted", cli.Numero, cli.rwc.RemoteAddr().String())
  		s.wg.Add(1)
  		go cli.serve()
  	}
  
  	return nil
  }
docs: // Handle requests messages on the ln listener