Explorar o código

Attempt to extract packets only if we got a ClientID.

David Fifield %!s(int64=6) %!d(string=hai) anos
pai
achega
2371fb4558
Modificáronse 1 ficheiros con 13 adicións e 11 borrados
  1. 13 11
      dnstt-server/main.go

+ 13 - 11
dnstt-server/main.go

@@ -506,7 +506,19 @@ func recvLoop(domain dns.Name, dnsConn net.PacketConn, ttConn *turbotunnel.Queue
 		var clientID turbotunnel.ClientID
 		var clientID turbotunnel.ClientID
 		n = copy(clientID[:], payload)
 		n = copy(clientID[:], payload)
 		payload = payload[n:]
 		payload = payload[n:]
-		if n < len(clientID) {
+		if n == len(clientID) {
+			// Discard padding and pull out the packets contained in
+			// the payload.
+			r := bytes.NewReader(payload)
+			for {
+				p, err := nextPacket(r)
+				if err != nil {
+					break
+				}
+				// Feed the incoming packet to KCP.
+				ttConn.QueueIncoming(p, clientID)
+			}
+		} else {
 			// Payload is not long enough to contain a ClientID.
 			// Payload is not long enough to contain a ClientID.
 			if resp != nil && resp.Rcode() == dns.RcodeNoError {
 			if resp != nil && resp.Rcode() == dns.RcodeNoError {
 				resp.Flags |= dns.RcodeNameError
 				resp.Flags |= dns.RcodeNameError
@@ -520,16 +532,6 @@ func recvLoop(domain dns.Name, dnsConn net.PacketConn, ttConn *turbotunnel.Queue
 			default:
 			default:
 			}
 			}
 		}
 		}
-		// Discard padding and pull out the packets contained in the payload.
-		r := bytes.NewReader(payload)
-		for {
-			p, err := nextPacket(r)
-			if err != nil {
-				break
-			}
-			// Feed the incoming packet to KCP.
-			ttConn.QueueIncoming(p, clientID)
-		}
 	}
 	}
 }
 }