remote: use winio DialPipeContext for named pipes

Signed-off-by: Ian King'ori <kingorim.ian@gmail.com>
This commit is contained in:
Ian King'ori 2024-02-27 16:56:10 +03:00
parent 85abcc413e
commit d40c4bb046
4 changed files with 43 additions and 3 deletions

View File

@ -10,6 +10,7 @@ import (
"time"
"github.com/docker/buildx/driver"
util "github.com/docker/buildx/driver/remote/util"
"github.com/docker/buildx/util/progress"
"github.com/moby/buildkit/client"
"github.com/moby/buildkit/util/tracing/detect"
@ -99,9 +100,8 @@ func (d *Driver) Dial(ctx context.Context) (net.Conn, error) {
return nil, errors.Errorf("invalid endpoint address: %s", d.InitConfig.EndpointAddr)
}
dialer := &net.Dialer{}
conn, err := util.DialContext(ctx, network, addr)
conn, err := dialer.DialContext(ctx, network, addr)
if err != nil {
return nil, errors.WithStack(err)
}

View File

@ -0,0 +1,17 @@
//go:build !windows
// +build !windows
package remote
import (
"context"
"net"
)
func DialContext(ctx context.Context, network string, addr string) (net.Conn, error) {
dialer := &net.Dialer{}
conn, err := dialer.DialContext(ctx, network, addr)
return conn, err
}

View File

@ -0,0 +1,23 @@
package remote
import (
"context"
"net"
"github.com/Microsoft/go-winio"
)
func DialContext(ctx context.Context, network string, addr string) (net.Conn, error) {
var conn net.Conn
var err error
// dial context doesn't support named pipes
if network == "npipe" {
conn, err = winio.DialPipeContext(ctx, addr)
} else {
dialer := &net.Dialer{}
conn, err = dialer.DialContext(ctx, network, addr)
}
return conn, err
}

2
go.mod
View File

@ -4,6 +4,7 @@ go 1.21
require (
github.com/Masterminds/semver/v3 v3.2.1
github.com/Microsoft/go-winio v0.6.1
github.com/aws/aws-sdk-go-v2/config v1.26.6
github.com/compose-spec/compose-go/v2 v2.0.0-rc.8
github.com/containerd/console v1.0.4
@ -60,7 +61,6 @@ require (
require (
github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
github.com/Microsoft/go-winio v0.6.1 // indirect
github.com/Microsoft/hcsshim v0.11.4 // indirect
github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d // indirect
github.com/agext/levenshtein v1.2.3 // indirect