Explorar el Código

KCP: discard useless conn in Accept

Shelikhoo hace 9 años
padre
commit
f601962391
Se han modificado 2 ficheros con 8 adiciones y 1 borrados
  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
 		}