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)
+		}()
 	}
 }