[fdio] Close node handle if node is a pipe or vmo
Pipes and Vmos do not keep a reference to the node handle,
so we need to close the handle to avoid leaking it.
FIDL-301 #done
Change-Id: If41b473d3a7b6cac90e2c702b8b8bf5330353570
diff --git a/src/syscall/zx/fdio/node.go b/src/syscall/zx/fdio/node.go
index 6e5b95a..6828486 100644
--- a/src/syscall/zx/fdio/node.go
+++ b/src/syscall/zx/fdio/node.go
@@ -36,8 +36,14 @@
case io.NodeInfoDirectory:
result = &Directory{Node: Node{NodeInterface: node}}
case io.NodeInfoPipe:
+ if err = ((*fidl.Proxy)(node)).Channel.Close(); err != nil {
+ return nil, err
+ }
result = NewPipe(info.Pipe.Socket)
case io.NodeInfoVmofile:
+ if err = ((*fidl.Proxy)(node)).Channel.Close(); err != nil {
+ return nil, err
+ }
result, err = NewVMOFile(
info.Vmofile.Vmo,
info.Vmofile.Offset,