Преглед изворни кода

KCP: discard useless conn in Accept

Shelikhoo пре 9 година
родитељ
комит
f601962391
2 измењених фајлова са 8 додато и 1 уклоњено
  1. 7 0
      transport/hub/kcp.go
  2. 1 1
      transport/hub/tcp.go

+ 7 - 0
transport/hub/kcp.go

@@ -19,6 +19,12 @@ type KCPVlistener struct {
 	previousSocketid_mapid int
 }
 
+/*Accept Accept a KCP connection
+Since KCP is stateless, if package deliver after it was closed,
+It could be reconized as a new connection and call accept.
+If we can detect that the connection is of such a kind,
+we will discard that conn.
+*/
 func (kvl *KCPVlistener) Accept() (net.Conn, error) {
 	conn, err := kvl.lst.Accept()
 	if err != nil {
@@ -37,6 +43,7 @@ func (kvl *KCPVlistener) Accept() (net.Conn, error) {
 		}
 	}
 	if badbit {
+		conn.Close()
 		return nil, errors.New("KCP:ConnDup, Don't worry~")
 	} else {
 		kvl.previousSocketid_mapid++

+ 1 - 1
transport/hub/tcp.go

@@ -92,7 +92,7 @@ func (this *TCPHub) start() {
 
 		if err != nil {
 			if this.accepting {
-				log.Warning("Listener: Failed to accept new TCP connection: ", err)
+				log.info("Listener: Failed to accept new TCP connection: ", err)
 			}
 			continue
 		}