diff --git a/carrier/carrier_test.go b/carrier/carrier_test.go index 6e51b9e2..4ccc76d2 100644 --- a/carrier/carrier_test.go +++ b/carrier/carrier_test.go @@ -66,11 +66,16 @@ func TestStartServer(t *testing.T) { defer ts.Close() go func() { - StartServer(logger, listenerAddress, "http://"+ts.Listener.Addr().String(), shutdownC) + err := StartServer(logger, listenerAddress, "http://"+ts.Listener.Addr().String(), shutdownC) + if err != nil { + t.Fatalf("Error starting server: %v", err) + } }() conn, err := net.Dial("tcp", listenerAddress) - assert.NoError(t, err) + if err != nil { + t.Fatalf("Error connecting to server: %v", err) + } conn.Write([]byte(message)) readBuffer := make([]byte, len(message)) diff --git a/cmd/cloudflared/windows_service.go b/cmd/cloudflared/windows_service.go index 1673f912..1b00b382 100644 --- a/cmd/cloudflared/windows_service.go +++ b/cmd/cloudflared/windows_service.go @@ -87,7 +87,20 @@ type windowsService struct { } // called by the package code at the start of the service -func (s *windowsService) Execute(args []string, r <-chan svc.ChangeRequest, statusChan chan<- svc.Status) (ssec bool, errno uint32) { +func (s *windowsService) Execute(serviceArgs []string, r <-chan svc.ChangeRequest, statusChan chan<- svc.Status) (ssec bool, errno uint32) { + // the arguments passed here are only meaningful if they were manually + // specified by the user, e.g. using the Services console or `sc start`. + // https://docs.microsoft.com/en-us/windows/desktop/services/service-entry-point + // https://stackoverflow.com/a/6235139 + var args []string + if len(serviceArgs) > 1 { + args = serviceArgs + } else { + // fall back to the arguments from ImagePath (or, as sc calls it, binPath) + args = os.Args + } + s.elog.Info(1, fmt.Sprintf("%s service arguments: %v", windowsServiceName, args)) + const cmdsAccepted = svc.AcceptStop | svc.AcceptShutdown statusChan <- svc.Status{State: svc.StartPending} errC := make(chan error)