@@ -44,6 +44,30 @@ func (s *muxServer) Run(t *testing.T) {
4444 }
4545}
4646
47+ func TestListenerHandoff (t * testing.T ) {
48+ listener , err := net .Listen ("tcp" , "127.0.0.1:0" )
49+ require .NoError (t , err )
50+ serverConnCh := make (chan net.Conn )
51+ listenerClosedCh := make (chan struct {})
52+ go func () {
53+ serverSide , err := listener .Accept ()
54+ require .NoError (t , err )
55+ serverConnCh <- serverSide
56+ err = listener .Close ()
57+ require .NoError (t , err )
58+ close (listenerClosedCh )
59+ }()
60+ clientConn , err := net .Dial ("tcp" , listener .Addr ().String ())
61+ require .NoError (t , err )
62+ serverConn := <- serverConnCh
63+ <- listenerClosedCh
64+ _ , _ = clientConn .Write ([]byte ("Hi" ))
65+ buf := make ([]byte , 1024 )
66+ n , _ := serverConn .Read (buf )
67+ require .Equal (t , []byte ("Hi" ), buf [:n ])
68+ close (serverConnCh )
69+ }
70+
4771func TestMultiMux (t * testing.T ) {
4872 wg := & sync.WaitGroup {}
4973 serverCh , shutDownMux , muxListenerAddrCh := make (chan * muxServer ), make (chan struct {}), make (chan string )
0 commit comments