rpc/stream/manager: InternalNewAcceptedVIF now blocks until encryption is
established. This means we need to run it in a goroutine to avoid
blocking the accept loop.
Change-Id: I4b2fd3209e11781af7530f11eed63462d3ffc1a8
diff --git a/profiles/internal/rpc/stream/manager/listener.go b/profiles/internal/rpc/stream/manager/listener.go
index 191ca22..298d20f 100644
--- a/profiles/internal/rpc/stream/manager/listener.go
+++ b/profiles/internal/rpc/stream/manager/listener.go
@@ -146,17 +146,19 @@
return
}
vlog.VI(1).Infof("New net.Conn accepted from %s (local address: %s)", conn.RemoteAddr(), conn.LocalAddr())
- vf, err := vif.InternalNewAcceptedVIF(conn, ln.manager.rid, principal, blessings, nil, ln.deleteVIF, opts...)
- if err != nil {
- vlog.Infof("Shutting down conn from %s (local address: %s) as a VIF could not be created: %v", conn.RemoteAddr(), conn.LocalAddr(), err)
- conn.Close()
- continue
- }
- ln.vifs.Insert(vf)
- ln.manager.vifs.Insert(vf)
+ go func() {
+ vf, err := vif.InternalNewAcceptedVIF(conn, ln.manager.rid, principal, blessings, nil, ln.deleteVIF, opts...)
+ if err != nil {
+ vlog.Infof("Shutting down conn from %s (local address: %s) as a VIF could not be created: %v", conn.RemoteAddr(), conn.LocalAddr(), err)
+ conn.Close()
+ return
+ }
+ ln.vifs.Insert(vf)
+ ln.manager.vifs.Insert(vf)
- ln.vifLoops.Add(1)
- go vifLoop(vf, ln.q, &ln.vifLoops)
+ ln.vifLoops.Add(1)
+ vifLoop(vf, ln.q, &ln.vifLoops)
+ }()
}
}