in tcpdumpw/main.go [491:519]
func startTCPListener(ctx context.Context, port *uint, job *tcpdumpJob, stopChannel chan<- bool) {
tcpListener, tcpListenerErr := net.Listen("tcp", fmt.Sprintf(":%d", *port))
if tcpListenerErr != nil {
jlog(ERROR, &emptyTcpdumpJob, fmt.Sprintf("failed to start the TCP listener: %v", tcpListenerErr))
os.Exit(5)
}
for {
select {
case <-ctx.Done():
var err error
if err = tcpListener.Close(); err != nil {
jlog(ERROR, job, fmt.Sprintf("failed to stop TCP listener: %d | %v", *port, err))
} else {
jlog(INFO, job, fmt.Sprintf("stopped TCP listener: %d", *port))
}
stopChannel <- (err == nil)
return
// accept connections until context is done
default:
conn, err := tcpListener.Accept()
if err == nil {
conn.Close()
}
}
}
}