@@ -29,7 +29,6 @@ type Common struct {
2929 runMode string // 运行模式
3030 dataFlow string // 数据流向
3131 tunnelKey string // 隧道密钥
32- tunnelAddr string // 隧道地址字符串
3332 tunnelTCPAddr * net.TCPAddr // 隧道TCP地址
3433 tunnelUDPAddr * net.UDPAddr // 隧道UDP地址
3534 targetTCPAddr * net.TCPAddr // 目标TCP地址
@@ -180,17 +179,17 @@ func (c *Common) getTunnelKey(parsedURL *url.URL) {
180179// getAddress 解析和设置地址信息
181180func (c * Common ) getAddress (parsedURL * url.URL ) {
182181 // 解析隧道地址
183- c . tunnelAddr = parsedURL .Host
182+ tunnelAddr : = parsedURL .Host
184183
185184 // 解析隧道TCP地址
186- if tunnelTCPAddr , err := net .ResolveTCPAddr ("tcp" , c . tunnelAddr ); err == nil {
185+ if tunnelTCPAddr , err := net .ResolveTCPAddr ("tcp" , tunnelAddr ); err == nil {
187186 c .tunnelTCPAddr = tunnelTCPAddr
188187 } else {
189188 c .logger .Error ("ResolveTCPAddr failed: %v" , err )
190189 }
191190
192191 // 解析隧道UDP地址
193- if tunnelUDPAddr , err := net .ResolveUDPAddr ("udp" , c . tunnelAddr ); err == nil {
192+ if tunnelUDPAddr , err := net .ResolveUDPAddr ("udp" , tunnelAddr ); err == nil {
194193 c .tunnelUDPAddr = tunnelUDPAddr
195194 } else {
196195 c .logger .Error ("ResolveUDPAddr failed: %v" , err )
@@ -303,6 +302,10 @@ func (c *Common) initContext() {
303302
304303// initTargetListener 初始化目标监听器
305304func (c * Common ) initTargetListener () error {
305+ if c .targetTCPAddr == nil || c .targetUDPAddr == nil {
306+ return & net.AddrError {Err : "target address is nil" }
307+ }
308+
306309 // 初始化目标TCP监听器
307310 targetListener , err := net .ListenTCP ("tcp" , c .targetTCPAddr )
308311 if err != nil {
@@ -327,6 +330,10 @@ func (c *Common) initTargetListener() error {
327330
328331// initTunnelListener 初始化隧道监听器
329332func (c * Common ) initTunnelListener () error {
333+ if c .tunnelTCPAddr == nil || c .tunnelUDPAddr == nil {
334+ return & net.AddrError {Err : "tunnel address is nil" }
335+ }
336+
330337 // 初始化隧道TCP监听器
331338 tunnelListener , err := net .ListenTCP ("tcp" , c .tunnelTCPAddr )
332339 if err != nil {
0 commit comments