From 4ee1abdafff0452bdee5e6a586782211c9f11270 Mon Sep 17 00:00:00 2001 From: Darien Raymond Date: Wed, 5 Apr 2017 14:26:20 +0200 Subject: [PATCH 1/2] refactor --- app/proxyman/mux/mux.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/proxyman/mux/mux.go b/app/proxyman/mux/mux.go index 687fe7905..3ae9c6295 100644 --- a/app/proxyman/mux/mux.go +++ b/app/proxyman/mux/mux.go @@ -158,6 +158,8 @@ func (m *Client) Closed() bool { } func (m *Client) monitor() { + defer m.manager.onClientFinish() + for { select { case <-m.ctx.Done(): @@ -172,8 +174,6 @@ func (m *Client) monitor() { } func (m *Client) cleanup() { - defer m.manager.onClientFinish() - m.access.Lock() defer m.access.Unlock() From 7682929c1126a97b7a3ad086ad9f2a80144f1f6b Mon Sep 17 00:00:00 2001 From: Darien Raymond Date: Wed, 5 Apr 2017 15:22:21 +0200 Subject: [PATCH 2/2] close main connection quicker --- app/proxyman/mux/mux.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/proxyman/mux/mux.go b/app/proxyman/mux/mux.go index 3ae9c6295..8a13a4b3e 100644 --- a/app/proxyman/mux/mux.go +++ b/app/proxyman/mux/mux.go @@ -168,6 +168,9 @@ func (m *Client) monitor() { case id := <-m.session2Remove: m.access.Lock() delete(m.sessions, id) + if len(m.sessions) == 0 { + m.cancel() + } m.access.Unlock() } } @@ -177,6 +180,9 @@ func (m *Client) cleanup() { m.access.Lock() defer m.access.Unlock() + m.inboundRay.InboundInput().Close() + m.inboundRay.InboundOutput().CloseError() + for _, s := range m.sessions { s.closeUplink() s.closeDownlink()