a bit less retarded exit handling
parent
ac822133d7
commit
46b52b6a5f
19
d4-tlsf.go
19
d4-tlsf.go
|
@ -287,7 +287,7 @@ func main() {
|
|||
// We start a worker to send the processed TLS connection the outside world
|
||||
var w sync.WaitGroup
|
||||
w.Add(1)
|
||||
go processCompletedSession(jobQ, &w)
|
||||
go processCompletedSession(cancelC, jobQ, &w)
|
||||
|
||||
var eth layers.Ethernet
|
||||
var ip4 layers.IPv4
|
||||
|
@ -358,6 +358,7 @@ func main() {
|
|||
fmt.Fprintf(os.Stderr, "\nCaught SIGINT: aborting\n")
|
||||
cancelC <- "stop"
|
||||
done = true
|
||||
break
|
||||
default:
|
||||
// NOP: continue
|
||||
}
|
||||
|
@ -387,14 +388,18 @@ func queueSession(t d4tls.TLSSession) bool {
|
|||
}
|
||||
}
|
||||
|
||||
func processCompletedSession(jobQ <-chan d4tls.TLSSession, w *sync.WaitGroup) {
|
||||
func processCompletedSession(cancelC <-chan string, jobQ <-chan d4tls.TLSSession, w *sync.WaitGroup) {
|
||||
for {
|
||||
tlss, more := <-jobQ
|
||||
if more {
|
||||
output(tlss)
|
||||
} else {
|
||||
select {
|
||||
case tlss, more := <-jobQ:
|
||||
if more {
|
||||
output(tlss)
|
||||
} else {
|
||||
w.Done()
|
||||
return
|
||||
}
|
||||
case <-cancelC:
|
||||
w.Done()
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue