func NewProxy(fromUrl, toUrl string) (net.Listener, error) { var ( from host to host ) from.Proto, from.Address = utils.ParseURL(fromUrl) to.Proto, to.Address = utils.ParseURL(toUrl) waiting, complete := make(chan net.Conn), make(chan net.Conn) server, err := net.Listen(from.Proto, from.Address) if err != nil { return nil, err } go func() error { for { conn, err := server.Accept() if err != nil { return err } go handleConn(waiting, complete, to) go func() { waiting <- conn }() } }() return server, nil }
func (d *dockerClient) newConn() (*httputil.ClientConn, error) { proto, path := utils.ParseURL(d.path) conn, err := net.Dial(proto, path) if err != nil { return nil, err } return httputil.NewClientConn(conn, nil), nil }