|
|
@ -15,7 +15,6 @@ func path(vendor, name string, port uint16) string {
|
|
|
|
return fmt.Sprintf("127.0.0.1:%v", port)
|
|
|
|
return fmt.Sprintf("127.0.0.1:%v", port)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// TODO(apenwarr): handle magic cookie auth
|
|
|
|
|
|
|
|
func connect(path string, port uint16) (net.Conn, error) {
|
|
|
|
func connect(path string, port uint16) (net.Conn, error) {
|
|
|
|
pipe, err := net.Dial("tcp", fmt.Sprintf("127.0.0.1:%d", port))
|
|
|
|
pipe, err := net.Dial("tcp", fmt.Sprintf("127.0.0.1:%d", port))
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
@ -36,7 +35,7 @@ func setFlags(network, address string, c syscall.RawConn) error {
|
|
|
|
// built on top of an API that's a disaster. So for now we'll hack it by
|
|
|
|
// built on top of an API that's a disaster. So for now we'll hack it by
|
|
|
|
// just always using a TCP session on a fixed port on localhost. As a
|
|
|
|
// just always using a TCP session on a fixed port on localhost. As a
|
|
|
|
// result, on Windows we ignore the vendor and name strings.
|
|
|
|
// result, on Windows we ignore the vendor and name strings.
|
|
|
|
// TODO(apenwarr): handle magic cookie auth
|
|
|
|
// NOTE(bradfitz): Jason did a new pipe package: https://go-review.googlesource.com/c/sys/+/299009
|
|
|
|
func listen(path string, port uint16) (_ net.Listener, gotPort uint16, _ error) {
|
|
|
|
func listen(path string, port uint16) (_ net.Listener, gotPort uint16, _ error) {
|
|
|
|
lc := net.ListenConfig{
|
|
|
|
lc := net.ListenConfig{
|
|
|
|
Control: setFlags,
|
|
|
|
Control: setFlags,
|
|
|
|