func StartHttpServer()

in agent/server/agent_http_server.go [32:77]


func StartHttpServer(agentConfig config.AgentConfig, handlers HandlerSpec, messageSources *messagesources.MessageSources) {
	if agentConfig.AgentAdminMode == config.UDS {
		// When starting a UDS HttpServer, UDS path needs to be removed first if it exists,
		// or there will be 'address already in use' error
		if err := os.Remove(agentConfig.AgentAdminUdsPath); err != nil && !os.IsNotExist(err) {
			log.Fatalf("Failed to remove Agent Admin UDS path:[%s], %v", agentConfig.AgentAdminUdsPath, err)
			messageSources.SetAgentExit()
			return
		}
	}
	// Register all configured handlers
	router := mux.NewRouter()
	for path, function := range handlers {
		if function == nil {
			log.Warnf("Handler for path [%s] is nil.  Not regstering it", path)
			continue
		}
		router.HandleFunc(path, function)
	}

	var listener net.Listener
	var err error
	switch agentConfig.AgentAdminMode {
	case config.UDS:
		listener, err = net.Listen(config.NETWORK_SOCKET_UNIX, agentConfig.AgentAdminUdsPath)
		if err != nil {
			log.Fatalf("Error starting the Agent HTTP server on Uds path, exiting agent: %v", err)
			messageSources.SetAgentExit()
			return
		}
	case config.TCP:
		tcpAddr := fmt.Sprintf("%s:%d", agentConfig.AgentHttpAddress, agentConfig.AgentHttpPort)
		listener, err = net.Listen(config.NETWORK_SOCKET_TCP, tcpAddr)
		if err != nil {
			log.Fatalf("Unable to start a listener on TCP Address, exiting agent: %v", err)
			messageSources.SetAgentExit()
			return
		}
	}
	log.Infof("Server started, %s", listener.Addr().String())
	if err := http.Serve(listener, router); err != nil {
		log.Fatalf("Error starting the Agents HTTP server, exiting agent: %v", err)
		messageSources.SetAgentExit()
		return
	}
}