mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-14 23:11:29 -04:00
Stop counting handlers before terminating.
The requirement to do so is obsolete and has already been removed from other pluggable transports. https://bugs.torproject.org/32046
This commit is contained in:
parent
d8d3170af8
commit
b4f4b29a03
4 changed files with 5 additions and 68 deletions
|
@ -13,17 +13,9 @@ const (
|
|||
SnowflakeTimeout = 30
|
||||
)
|
||||
|
||||
// HandlerChan - When a connection handler starts, +1 is written to this channel; when it
|
||||
// ends, -1 is written.
|
||||
var HandlerChan = make(chan int)
|
||||
|
||||
// Given an accepted SOCKS connection, establish a WebRTC connection to the
|
||||
// remote peer and exchange traffic.
|
||||
func Handler(socks SocksConnector, snowflakes SnowflakeCollector) error {
|
||||
HandlerChan <- 1
|
||||
defer func() {
|
||||
HandlerChan <- -1
|
||||
}()
|
||||
// Obtain an available WebRTC remote. May block.
|
||||
snowflake := snowflakes.Pop()
|
||||
if nil == snowflake {
|
||||
|
|
|
@ -184,8 +184,6 @@ func main() {
|
|||
}
|
||||
pt.CmethodsDone()
|
||||
|
||||
var numHandlers int
|
||||
var sig os.Signal
|
||||
sigChan := make(chan os.Signal, 1)
|
||||
signal.Notify(sigChan, syscall.SIGTERM)
|
||||
|
||||
|
@ -202,22 +200,12 @@ func main() {
|
|||
}
|
||||
|
||||
// keep track of handlers and wait for a signal
|
||||
sig = nil
|
||||
for sig == nil {
|
||||
select {
|
||||
case n := <-sf.HandlerChan:
|
||||
numHandlers += n
|
||||
case sig = <-sigChan:
|
||||
}
|
||||
}
|
||||
<-sigChan
|
||||
|
||||
// signal received, shut down
|
||||
for _, ln := range listeners {
|
||||
ln.Close()
|
||||
}
|
||||
snowflakes.End()
|
||||
for numHandlers > 0 {
|
||||
numHandlers += <-sf.HandlerChan
|
||||
}
|
||||
log.Println("snowflake is done.")
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue