From 14e6c472f54ac36d5bdfe451371c619953eb0a17 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Wed, 20 Jun 2018 16:18:03 +0200 Subject: vm/gvisor: add package gvisor package provides support for gVisor, user-space kernel, testing. See https://github.com/google/gvisor --- pkg/rpctype/rpc.go | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'pkg') diff --git a/pkg/rpctype/rpc.go b/pkg/rpctype/rpc.go index 939805212..d45d3d49d 100644 --- a/pkg/rpctype/rpc.go +++ b/pkg/rpctype/rpc.go @@ -7,6 +7,7 @@ import ( "fmt" "net" "net/rpc" + "os" "time" "github.com/google/syzkaller/pkg/log" @@ -54,12 +55,20 @@ type RPCClient struct { } func NewRPCClient(addr string) (*RPCClient, error) { - conn, err := net.DialTimeout("tcp", addr, 60*time.Second) - if err != nil { - return nil, err + var conn net.Conn + var err error + if addr == "stdin" { + // This is used by vm/gvisor which passes us a unix socket connection in stdin. + if conn, err = net.FileConn(os.Stdin); err != nil { + return nil, err + } + } else { + if conn, err = net.DialTimeout("tcp", addr, 60*time.Second); err != nil { + return nil, err + } + conn.(*net.TCPConn).SetKeepAlive(true) + conn.(*net.TCPConn).SetKeepAlivePeriod(time.Minute) } - conn.(*net.TCPConn).SetKeepAlive(true) - conn.(*net.TCPConn).SetKeepAlivePeriod(time.Minute) cli := &RPCClient{ conn: conn, c: rpc.NewClient(conn), -- cgit mrf-deployment