隧道失败后,及时释放

This commit is contained in:
kony
2025-01-21 18:25:59 +08:00
parent aaa4242acb
commit 73c7f85acf
2 changed files with 19 additions and 19 deletions

View File

@@ -56,14 +56,14 @@ func GetLocalQuicConn(conn_type int, count int) (*tun.TunActive, *tun.TunPassive
if RedisGet(&redisJson) != nil {
log.Println("会话超时")
return nil, nil, nil, nil, nil
return tun_active, tun_passive, nil, nil, nil
}
utils.Log().SetDebugSate(redisJson.State)
if !strings.EqualFold(redisJson.SessionID, SessionID) {
utils.Log().Debug("会话被重置")
return nil, nil, nil, nil, nil
return tun_active, tun_passive, nil, nil, nil
}
switch redisJson.State {
@@ -80,7 +80,7 @@ func GetLocalQuicConn(conn_type int, count int) (*tun.TunActive, *tun.TunPassive
redisJson.LocalIP, redisJson.LocalPort1, redisJson.LocalPort2 = LocalIP, LocalPort1, LocalPort2
if redisJson.LocalIP == redisJson.RemoteIP {
RedisDel()
return nil, nil, nil, nil, fmt.Errorf("已经和对端处在同一个公网下")
return tun_active, tun_passive, nil, nil, fmt.Errorf("已经和对端处在同一个公网下")
}
tun_passive = tun.CteateTunPassive([]byte(redisJson.SessionID), conn, redisJson.RemoteIP, redisJson.RemotePort1, redisJson.RemotePort2, redisJson.SendPortCount)
@@ -98,7 +98,7 @@ func GetLocalQuicConn(conn_type int, count int) (*tun.TunActive, *tun.TunPassive
if redisJson.LocalIP == redisJson.RemoteIP {
RedisDel()
return nil, nil, nil, nil, fmt.Errorf("已经和对端处在同一个公网下")
return tun_active, tun_passive, nil, nil, fmt.Errorf("已经和对端处在同一个公网下")
}
tun_active = tun.CreateTunActive([]byte(redisJson.SessionID), conn, 15*time.Second)
@@ -111,28 +111,28 @@ func GetLocalQuicConn(conn_type int, count int) (*tun.TunActive, *tun.TunPassive
if tun_passive != nil {
if tun_passive.TunQuicConn != nil {
utils.Log().DebugF("连接成功")
return nil, tun_passive, tun_passive.TunQuicConn, tun_passive.TunHealthStream, nil
return tun_active, tun_passive, tun_passive.TunQuicConn, tun_passive.TunHealthStream, nil
}
}
if tun_active != nil {
if tun_active.TunQuicConn != nil {
utils.Log().DebugF("连接成功")
return tun_active, nil, tun_active.TunQuicConn, tun_active.TunHealthStream, nil
return tun_active, tun_passive, tun_active.TunQuicConn, tun_active.TunHealthStream, nil
}
}
utils.Log().Debug("连接失败")
return nil, nil, nil, nil, nil
return tun_active, tun_passive, nil, nil, nil
case 4:
utils.Log().Debug("连接超时")
return nil, nil, nil, nil, nil
return tun_active, tun_passive, nil, nil, nil
default:
utils.Log().Debug("等待对端状态")
}
}
return nil, nil, nil, nil, nil
return tun_active, tun_passive, nil, nil, nil
}
func GetLocalStats() int {

View File

@@ -43,26 +43,26 @@ func GetRemoteQuicConn(time_out time.Duration) (*tun.TunActive, *tun.TunPassive,
if RedisGet(&redisJson) != nil {
log.Println("会话超时")
return nil, nil, nil, nil
return tun_active, tun_passive, nil, nil
}
utils.Log().SetDebugSate(redisJson.State)
if !strings.EqualFold(redisJson.SessionID, SessionID) {
utils.Log().Debug("会话被重置")
return nil, nil, nil, nil
return tun_active, tun_passive, nil, nil
}
if redisJson.State < last_state {
m_redis_db.Del(m_md5_tun_key)
utils.Log().DebugF("状态异常: %d -> %d", last_state, redisJson.State)
return nil, nil, nil, nil
return tun_active, tun_passive, nil, nil
}
if redisJson.State != 3 && redisJson.State != 4 && redisJson.State-last_state > 1 {
m_redis_db.Del(m_md5_tun_key)
utils.Log().DebugF("状态异常: %d -> %d", last_state, redisJson.State)
return nil, nil, nil, nil
return tun_active, tun_passive, nil, nil
}
redisJson.SocketTimeOut = time_out
@@ -129,24 +129,24 @@ func GetRemoteQuicConn(time_out time.Duration) (*tun.TunActive, *tun.TunPassive,
utils.Log().Debug("对端被动连接成功")
RedisSet(redisJson.RedisTimeOut, &redisJson)
if tun_active != nil {
return tun_active, nil, tun_active.TunQuicConn, tun_active.TunHealthStream
return tun_active, tun_passive, tun_active.TunQuicConn, tun_active.TunHealthStream
}
return nil, nil, nil, nil
return tun_active, tun_passive, nil, nil
case <-tun_passive_chain:
redisJson.State = 3
utils.Log().Debug("对端主动连接成功")
RedisSet(redisJson.RedisTimeOut, &redisJson)
if tun_passive != nil {
return nil, tun_passive, tun_passive.TunQuicConn, tun_passive.TunHealthStream
return tun_active, tun_passive, tun_passive.TunQuicConn, tun_passive.TunHealthStream
}
return nil, nil, nil, nil
return tun_active, tun_passive, nil, nil
case <-time.After(time_out):
redisJson.State = 4
utils.Log().Debug("对端连接超时")
RedisSet(redisJson.RedisTimeOut, &redisJson)
return nil, nil, nil, nil
return tun_active, tun_passive, nil, nil
}
case 3, 4:
@@ -158,7 +158,7 @@ func GetRemoteQuicConn(time_out time.Duration) (*tun.TunActive, *tun.TunPassive,
last_state = redisJson.State
}
return nil, nil, nil, nil
return tun_active, tun_passive, nil, nil
}
var (