mirror of
https://github.com/v2fly/v2ray-core.git
synced 2025-01-02 23:47:07 -05:00
force close session manage when main connection is finished
This commit is contained in:
parent
81d840699a
commit
2cf809021b
@ -121,6 +121,7 @@ func (m *Client) monitor() {
|
||||
for {
|
||||
select {
|
||||
case <-m.ctx.Done():
|
||||
m.sessionManager.Close()
|
||||
m.inboundRay.InboundInput().Close()
|
||||
m.inboundRay.InboundOutput().CloseError()
|
||||
return
|
||||
@ -302,6 +303,8 @@ func handle(ctx context.Context, s *Session, output buf.Writer) {
|
||||
func (w *ServerWorker) run(ctx context.Context) {
|
||||
input := w.outboundRay.OutboundInput()
|
||||
reader := NewReader(input)
|
||||
|
||||
defer w.sessionManager.Close()
|
||||
L:
|
||||
for {
|
||||
select {
|
||||
|
@ -74,10 +74,26 @@ func (m *SessionManager) CloseIfNoSession() bool {
|
||||
m.RLock()
|
||||
defer m.RUnlock()
|
||||
|
||||
if m.closed {
|
||||
return true
|
||||
}
|
||||
|
||||
if len(m.sessions) == 0 {
|
||||
return false
|
||||
}
|
||||
|
||||
m.closed = true
|
||||
return true
|
||||
}
|
||||
|
||||
func (m *SessionManager) Close() {
|
||||
m.RLock()
|
||||
defer m.RUnlock()
|
||||
|
||||
if m.closed {
|
||||
return
|
||||
}
|
||||
|
||||
m.closed = true
|
||||
|
||||
for _, s := range m.sessions {
|
||||
@ -86,8 +102,6 @@ func (m *SessionManager) CloseIfNoSession() bool {
|
||||
}
|
||||
|
||||
m.sessions = make(map[uint16]*Session)
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
type Session struct {
|
||||
|
Loading…
Reference in New Issue
Block a user