func handleListners(cl chan net.Listener) {

	for v := range cl {
		go func(l net.Listener) {
			srv := new(FastCGIServer)
			fcgi.Serve(l, srv)
		}(v)
	}
}
func handleListners(cl chan net.Listener) {

	for v := range cl {
		go func(l net.Listener) {

			switch reflect.ValueOf(l).Elem().FieldByName("Name").String() {
			case "fcgi":
				srv := new(FastCGIServer)
				fcgi.Serve(l, srv)
			case "http":
				handler := new(HTTPServer)
				http.Serve(l, handler)
			case "tcp_sock", "tcp_port":
				for {
					conn, err := l.Accept()
					if err != nil {
						// gozd.ErrorAlreadyStopped may occur when shutdown/reload
						log.Println("accept error: ", err)
						break
					}

					go serveTCP(conn)
				}
			case "https":
				handler := new(HTTPServer)

				srv := &http.Server{Handler: handler}

				config := &tls.Config{}
				if srv.TLSConfig != nil {
					*config = *srv.TLSConfig
				}
				if config.NextProtos == nil {
					config.NextProtos = []string{"http/1.1"}
				}

				var err error
				config.Certificates = make([]tls.Certificate, 1)
				config.Certificates[0], err = tls.LoadX509KeyPair(certFile, keyFile)
				if err != nil {
					log.Println("ssl cert has problem:", err)
					return
				}

				tlsListener := tls.NewListener(l, config)
				srv.Serve(tlsListener)
			}
		}(v)
	}
}