Files
mautrix-telegram/pkg/gotd/transport/once_close.go
T

22 lines
323 B
Go

package transport
import (
"net"
"sync"
)
// onceCloseListener wraps a net.Listener, protecting it from
// multiple Close calls.
type onceCloseListener struct {
net.Listener
once sync.Once
err error
}
func (o *onceCloseListener) Close() error {
o.once.Do(func() {
o.err = o.Listener.Close()
})
return o.err
}