mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-13 20:11:19 -04:00
Immediately and unconditionally grant new SOCKS connections.
This commit is contained in:
parent
e9b218a65c
commit
ee2fb42d33
2 changed files with 9 additions and 9 deletions
|
@ -16,22 +16,14 @@ const (
|
||||||
|
|
||||||
// Given an accepted SOCKS connection, establish a WebRTC connection to the
|
// Given an accepted SOCKS connection, establish a WebRTC connection to the
|
||||||
// remote peer and exchange traffic.
|
// remote peer and exchange traffic.
|
||||||
func Handler(socks SocksConnector, snowflakes SnowflakeCollector) error {
|
func Handler(socks net.Conn, snowflakes SnowflakeCollector) error {
|
||||||
// Obtain an available WebRTC remote. May block.
|
// Obtain an available WebRTC remote. May block.
|
||||||
snowflake := snowflakes.Pop()
|
snowflake := snowflakes.Pop()
|
||||||
if nil == snowflake {
|
if nil == snowflake {
|
||||||
if err := socks.Reject(); err != nil {
|
|
||||||
log.Printf("socks.Reject returned error: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return errors.New("handler: Received invalid Snowflake")
|
return errors.New("handler: Received invalid Snowflake")
|
||||||
}
|
}
|
||||||
defer snowflake.Close()
|
defer snowflake.Close()
|
||||||
log.Println("---- Handler: snowflake assigned ----")
|
log.Println("---- Handler: snowflake assigned ----")
|
||||||
err := socks.Grant(&net.TCPAddr{IP: net.IPv4zero, Port: 0})
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
// When WebRTC resets, close the SOCKS connection too.
|
// When WebRTC resets, close the SOCKS connection too.
|
||||||
|
|
|
@ -59,9 +59,17 @@ func socksAcceptLoop(ln *pt.SocksListener, snowflakes sf.SnowflakeCollector) {
|
||||||
log.Printf("SOCKS accepted: %v", conn.Req)
|
log.Printf("SOCKS accepted: %v", conn.Req)
|
||||||
go func() {
|
go func() {
|
||||||
defer conn.Close()
|
defer conn.Close()
|
||||||
|
|
||||||
|
err := conn.Grant(&net.TCPAddr{IP: net.IPv4zero, Port: 0})
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("conn.Grant error: %s", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
err = sf.Handler(conn, snowflakes)
|
err = sf.Handler(conn, snowflakes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("handler error: %s", err)
|
log.Printf("handler error: %s", err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue