Browse Source

Fix panic due to missing err guard

Rod Hynes 4 years ago
parent
commit
9ebf47d9e3
1 changed files with 2 additions and 2 deletions
  1. 2 2
      psiphon/common/quic/obfuscator.go

+ 2 - 2
psiphon/common/quic/obfuscator.go

@@ -341,8 +341,7 @@ func (conn *ObfuscatedPacketConn) readPacketWithType(
 		//
 		//
 		// Lantern's OQUIC specification:
 		// Lantern's OQUIC specification:
 		// https://github.com/getlantern/quicwrapper/blob/master/OQUIC.md
 		// https://github.com/getlantern/quicwrapper/blob/master/OQUIC.md
-
-		if conn.isIETFClient && conn.isDecoyClient {
+		if err == nil && conn.isIETFClient && conn.isDecoyClient {
 			count := atomic.LoadInt32(&conn.decoyPacketCount)
 			count := atomic.LoadInt32(&conn.decoyPacketCount)
 			if count > 0 && conn.paddingPRNG.FlipCoin() {
 			if count > 0 && conn.paddingPRNG.FlipCoin() {
 
 
@@ -364,6 +363,7 @@ func (conn *ObfuscatedPacketConn) readPacketWithType(
 			continue
 			continue
 		}
 		}
 
 
+		// Do not wrap any I/O err returned by conn.OOBCapablePacketConn
 		return n, oobn, flags, addr, isIETF, err
 		return n, oobn, flags, addr, isIETF, err
 	}
 	}
 }
 }