99 "encoding/hex"
1010 "fmt"
1111 "hash/fnv"
12+ "io"
1213 "net"
1314 "net/url"
1415 "os"
@@ -945,7 +946,7 @@ func (c *Common) commonUDPLoop() {
945946 if err != nil {
946947 if netErr , ok := err .(net.Error ); ok && netErr .Timeout () {
947948 c .logger .Debug ("UDP session abort: %v" , err )
948- } else {
949+ } else if err != io . EOF {
949950 c .logger .Error ("commonUDPLoop: read from tunnel failed: %v" , err )
950951 }
951952 return
@@ -954,7 +955,9 @@ func (c *Common) commonUDPLoop() {
954955 // 将数据写入目标UDP连接
955956 _ , err = c .targetUDPConn .WriteToUDP (buffer [:x ], clientAddr )
956957 if err != nil {
957- c .logger .Error ("commonUDPLoop: writeToUDP failed: %v" , err )
958+ if err != io .EOF {
959+ c .logger .Error ("commonUDPLoop: writeToUDP failed: %v" , err )
960+ }
958961 return
959962 }
960963 // 传输完成
@@ -987,7 +990,9 @@ func (c *Common) commonUDPLoop() {
987990 // 将原始数据写入池连接
988991 _ , err = remoteConn .Write (buffer [:x ])
989992 if err != nil {
990- c .logger .Error ("commonUDPLoop: write to tunnel failed: %v" , err )
993+ if err != io .EOF {
994+ c .logger .Error ("commonUDPLoop: write to tunnel failed: %v" , err )
995+ }
991996 c .targetUDPSession .Delete (sessionKey )
992997 remoteConn .Close ()
993998 c .putUDPBuffer (buffer )
@@ -1252,7 +1257,7 @@ func (c *Common) commonUDPOnce(signalURL *url.URL) {
12521257 if err != nil {
12531258 if netErr , ok := err .(net.Error ); ok && netErr .Timeout () {
12541259 c .logger .Debug ("UDP session abort: %v" , err )
1255- } else {
1260+ } else if err != io . EOF {
12561261 c .logger .Error ("commonUDPOnce: read from tunnel failed: %v" , err )
12571262 }
12581263 return
@@ -1261,7 +1266,9 @@ func (c *Common) commonUDPOnce(signalURL *url.URL) {
12611266 // 将数据写入目标UDP连接
12621267 _ , err = targetConn .Write (buffer [:x ])
12631268 if err != nil {
1264- c .logger .Error ("commonUDPOnce: write to target failed: %v" , err )
1269+ if err != io .EOF {
1270+ c .logger .Error ("commonUDPOnce: write to target failed: %v" , err )
1271+ }
12651272 return
12661273 }
12671274
@@ -1283,7 +1290,7 @@ func (c *Common) commonUDPOnce(signalURL *url.URL) {
12831290 if err != nil {
12841291 if netErr , ok := err .(net.Error ); ok && netErr .Timeout () {
12851292 c .logger .Debug ("UDP session abort: %v" , err )
1286- } else {
1293+ } else if err != io . EOF {
12871294 c .logger .Error ("commonUDPOnce: read from target failed: %v" , err )
12881295 }
12891296 return
@@ -1292,7 +1299,9 @@ func (c *Common) commonUDPOnce(signalURL *url.URL) {
12921299 // 将数据写回隧道连接
12931300 _ , err = remoteConn .Write (buffer [:x ])
12941301 if err != nil {
1295- c .logger .Error ("commonUDPOnce: write to tunnel failed: %v" , err )
1302+ if err != io .EOF {
1303+ c .logger .Error ("commonUDPOnce: write to tunnel failed: %v" , err )
1304+ }
12961305 return
12971306 }
12981307
@@ -1513,7 +1522,7 @@ func (c *Common) singleUDPLoop() error {
15131522 if err != nil {
15141523 if netErr , ok := err .(net.Error ); ok && netErr .Timeout () {
15151524 c .logger .Debug ("UDP session abort: %v" , err )
1516- } else {
1525+ } else if err != io . EOF {
15171526 c .logger .Error ("singleUDPLoop: read from target failed: %v" , err )
15181527 }
15191528 c .targetUDPSession .Delete (sessionKey )
@@ -1526,7 +1535,9 @@ func (c *Common) singleUDPLoop() error {
15261535 // 将响应写回隧道UDP连接
15271536 _ , err = c .tunnelUDPConn .WriteToUDP (buffer [:x ], clientAddr )
15281537 if err != nil {
1529- c .logger .Error ("singleUDPLoop: writeToUDP failed: %v" , err )
1538+ if err != io .EOF {
1539+ c .logger .Error ("singleUDPLoop: writeToUDP failed: %v" , err )
1540+ }
15301541 c .targetUDPSession .Delete (sessionKey )
15311542 if targetConn != nil {
15321543 targetConn .Close ()
@@ -1543,7 +1554,9 @@ func (c *Common) singleUDPLoop() error {
15431554 c .logger .Debug ("Starting transfer: %v <-> %v" , targetConn .LocalAddr (), c .tunnelUDPConn .LocalAddr ())
15441555 _ , err = targetConn .Write (buffer [:x ])
15451556 if err != nil {
1546- c .logger .Error ("singleUDPLoop: write to target failed: %v" , err )
1557+ if err != io .EOF {
1558+ c .logger .Error ("singleUDPLoop: write to target failed: %v" , err )
1559+ }
15471560 c .targetUDPSession .Delete (sessionKey )
15481561 if targetConn != nil {
15491562 targetConn .Close ()
0 commit comments