vsudd: Log as we Close both sockets (via defer)

Signed-off-by: Ian Campbell <ian.campbell@docker.com>
This commit is contained in:
Ian Campbell 2016-04-07 17:40:14 +01:00
parent 5c0fd63265
commit 057fb53a6a

View File

@ -106,7 +106,12 @@ func handleOne(connid int, fd int, cid, port uint) {
vsock := os.NewFile(uintptr(fd), fmt.Sprintf("vsock:%d", fd))
log.Printf("%d Accepted connection on fd %d from %08x.%08x", connid, fd, cid, port)
defer syscall.Close(fd)
defer func() {
log.Println(connid, "Closing vsock", fd)
if err := syscall.Close(fd) ; err != nil {
log.Println(connid, "Error closing", fd ":", err)
}
}()
var docker *net.UnixConn
var err error
@ -119,13 +124,18 @@ func handleOne(connid int, fd int, cid, port uint) {
}
time.Sleep(50 * time.Millisecond)
}
defer docker.Close()
if err != nil {
// If the forwarding program has broken then close and continue
log.Println(connid, "Failed to connect to Unix domain socket after 10s", sock, err)
return
}
defer func() {
log.Println(connid, "Closing docker", docker)
if err := docker.Close() ; err != nil {
log.Println(connid, "Error closing", docker, ":", err)
}
}()
log.Println(connid, "Connected to docker", docker)
w := make(chan int64)
go func() {