mirror of https://github.com/v2ray/v2ray-core
wait for done
parent
32842bc14b
commit
55328921b5
|
@ -182,6 +182,13 @@ func fetchInput(ctx context.Context, s *session, output buf.Writer) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func waitForDone(ctx context.Context, s *session) {
|
||||||
|
<-ctx.Done()
|
||||||
|
s.closeUplink()
|
||||||
|
s.closeDownlink()
|
||||||
|
s.output.Close()
|
||||||
|
}
|
||||||
|
|
||||||
func (m *Client) Dispatch(ctx context.Context, outboundRay ray.OutboundRay) bool {
|
func (m *Client) Dispatch(ctx context.Context, outboundRay ray.OutboundRay) bool {
|
||||||
m.access.Lock()
|
m.access.Lock()
|
||||||
defer m.access.Unlock()
|
defer m.access.Unlock()
|
||||||
|
@ -210,6 +217,7 @@ func (m *Client) Dispatch(ctx context.Context, outboundRay ray.OutboundRay) bool
|
||||||
}
|
}
|
||||||
m.sessions[id] = s
|
m.sessions[id] = s
|
||||||
go fetchInput(ctx, s, m.inboundRay.InboundInput())
|
go fetchInput(ctx, s, m.inboundRay.InboundInput())
|
||||||
|
go waitForDone(ctx, s)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue