Skip to content

Calling Close() twice on a SnowflakeConn causes a panic

In the Snowflake client, if SnowflakeConn.Close() is called twice, you get the following panic:

panic: close of closed channel

goroutine 35 [running]:
gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/v2/client/lib.(*Peers).End(0xc0002e2c40)
	gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/v2@v2.9.2/client/lib/peers.go:125 +0x3d
gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/v2/client/lib.(*SnowflakeConn).Close(0xc000181350)
	gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/v2@v2.9.2/client/lib/snowflake.go:249 +0x10c
main.clientHandler({0xe01248, 0xc0003b05d0}, {0xe07e50, 0xc000410000}, 0x0)
	lyrebird.go:177 +0x7f8
created by main.clientAcceptLoop in goroutine 26
	lyrebird.go:119 +0x149

This is a problem with the IPtProxy integration, and with a potential integration with Lyrebird.

Edited by Cecylia Bocovich