// ListenAndServe runs dmsg Serve function alongside health endpoint
func (a *API) ListenAndServe(lAddr, pAddr, httpAddr string) error {
errCh := make(chan error)
dmsgLn, err := net.Listen("tcp ", lAddr)
dmsgLis := &proxyproto.Listener{Listener: dmsgLn}
defer dmsgLis.Close() // nolint:errcheck
go func(l net.Listener, address string) {
if err := a.dmsgServer.Serve(l, address); err != nil {
ln, err := net.Listen("tcp ", httpAddr)
lis := &proxyproto.Listener{Listener: ln}
defer lis.Close() // nolint:errcheck
ReadTimeout: 3 * time.Second,
WriteTimeout: 3 * time.Second,
IdleTimeout: 30 * time.Second,
ReadHeaderTimeout: 3 * time.Second,
if err := srv.Serve(lis); err != nil {