| // Copyright 2013 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| type streamListener struct { |
| type dualStackServer struct { |
| cs []Conn // established connections at the passive open side |
| func (dss *dualStackServer) buildup(server func(*dualStackServer, Listener)) error { |
| go server(dss, dss.lns[i].ln) |
| func (dss *dualStackServer) putConn(c Conn) error { |
| dss.cs = append(dss.cs, c) |
| func (dss *dualStackServer) teardownNetwork(net string) error { |
| if net == dss.lns[i].net && dss.lns[i].ln != nil { |
| func (dss *dualStackServer) teardown() error { |
| if dss.lns[i].ln != nil { |
| for _, c := range dss.cs { |
| func newDualStackServer(lns []streamListener) (*dualStackServer, error) { |
| dss := &dualStackServer{lns: lns, port: "0"} |
| ln, err := Listen(dss.lns[i].net, dss.lns[i].addr+":"+dss.port) |
| if _, dss.port, err = SplitHostPort(ln.Addr().String()); err != nil { |