diff --git a/client/proxy/proxy_wrapper.go b/client/proxy/proxy_wrapper.go
index 487e3702..c3a57047 100644
--- a/client/proxy/proxy_wrapper.go
+++ b/client/proxy/proxy_wrapper.go
@@ -254,8 +254,8 @@ func (pw *Wrapper) statusFailedCallback() {
 func (pw *Wrapper) InWorkConn(workConn net.Conn, m *msg.StartWorkConn) {
 	xl := pw.xl
 	pw.mu.RLock()
+	defer pw.mu.RUnlock()
 	pxy := pw.pxy
-	pw.mu.RUnlock()
 	if pxy != nil && pw.Phase == ProxyPhaseRunning {
 		xl.Debugf("start a new work connection, localAddr: %s remoteAddr: %s", workConn.LocalAddr().String(), workConn.RemoteAddr().String())
 		go pxy.InWorkConn(workConn, m)