Browse Source

Merge pull request #524 from rod-hynes/gquic

gQUIC fixes and vendor cleanup
Rod Hynes 6 years ago
parent
commit
3c0b4ab6f4
100 changed files with 191 additions and 163 deletions
  1. 0 0
      psiphon/common/quic/gquic-go/LICENSE
  2. 0 0
      psiphon/common/quic/gquic-go/README.md
  3. 2 2
      psiphon/common/quic/gquic-go/buffer_pool.go
  4. 23 13
      psiphon/common/quic/gquic-go/client.go
  5. 1 1
      psiphon/common/quic/gquic-go/conn.go
  6. 4 4
      psiphon/common/quic/gquic-go/crypto_stream.go
  7. 3 3
      psiphon/common/quic/gquic-go/frame_sorter.go
  8. 3 3
      psiphon/common/quic/gquic-go/framer.go
  9. 12 9
      psiphon/common/quic/gquic-go/h2quic/client.go
  10. 0 0
      psiphon/common/quic/gquic-go/h2quic/gzipreader.go
  11. 2 2
      psiphon/common/quic/gquic-go/h2quic/request.go
  12. 1 1
      psiphon/common/quic/gquic-go/h2quic/request_body.go
  13. 6 6
      psiphon/common/quic/gquic-go/h2quic/request_writer.go
  14. 1 1
      psiphon/common/quic/gquic-go/h2quic/response.go
  15. 5 5
      psiphon/common/quic/gquic-go/h2quic/response_writer.go
  16. 0 0
      psiphon/common/quic/gquic-go/h2quic/response_writer_closenotifier.go
  17. 2 2
      psiphon/common/quic/gquic-go/h2quic/roundtrip.go
  18. 6 6
      psiphon/common/quic/gquic-go/h2quic/server.go
  19. 3 3
      psiphon/common/quic/gquic-go/interface.go
  20. 0 0
      psiphon/common/quic/gquic-go/internal/ackhandler/gen.go
  21. 2 2
      psiphon/common/quic/gquic-go/internal/ackhandler/interfaces.go
  22. 2 2
      psiphon/common/quic/gquic-go/internal/ackhandler/packet.go
  23. 0 0
      psiphon/common/quic/gquic-go/internal/ackhandler/packet_linkedlist.go
  24. 4 4
      psiphon/common/quic/gquic-go/internal/ackhandler/received_packet_handler.go
  25. 4 4
      psiphon/common/quic/gquic-go/internal/ackhandler/received_packet_history.go
  26. 1 1
      psiphon/common/quic/gquic-go/internal/ackhandler/retransmittable.go
  27. 0 0
      psiphon/common/quic/gquic-go/internal/ackhandler/send_mode.go
  28. 5 5
      psiphon/common/quic/gquic-go/internal/ackhandler/sent_packet_handler.go
  29. 1 1
      psiphon/common/quic/gquic-go/internal/ackhandler/sent_packet_history.go
  30. 2 2
      psiphon/common/quic/gquic-go/internal/ackhandler/stop_waiting_manager.go
  31. 1 1
      psiphon/common/quic/gquic-go/internal/congestion/bandwidth.go
  32. 0 0
      psiphon/common/quic/gquic-go/internal/congestion/clock.go
  33. 2 2
      psiphon/common/quic/gquic-go/internal/congestion/cubic.go
  34. 2 2
      psiphon/common/quic/gquic-go/internal/congestion/cubic_sender.go
  35. 2 2
      psiphon/common/quic/gquic-go/internal/congestion/hybrid_slow_start.go
  36. 1 1
      psiphon/common/quic/gquic-go/internal/congestion/interface.go
  37. 1 1
      psiphon/common/quic/gquic-go/internal/congestion/prr_sender.go
  38. 1 1
      psiphon/common/quic/gquic-go/internal/congestion/rtt_stats.go
  39. 1 1
      psiphon/common/quic/gquic-go/internal/congestion/stats.go
  40. 1 1
      psiphon/common/quic/gquic-go/internal/crypto/AEAD.go
  41. 8 11
      psiphon/common/quic/gquic-go/internal/crypto/aesgcm12_aead.go
  42. 1 1
      psiphon/common/quic/gquic-go/internal/crypto/aesgcm_aead.go
  43. 1 1
      psiphon/common/quic/gquic-go/internal/crypto/cert_cache.go
  44. 0 0
      psiphon/common/quic/gquic-go/internal/crypto/cert_chain.go
  45. 1 1
      psiphon/common/quic/gquic-go/internal/crypto/cert_compression.go
  46. 0 0
      psiphon/common/quic/gquic-go/internal/crypto/cert_dict.go
  47. 1 1
      psiphon/common/quic/gquic-go/internal/crypto/cert_manager.go
  48. 1 1
      psiphon/common/quic/gquic-go/internal/crypto/cert_sets.go
  49. 0 0
      psiphon/common/quic/gquic-go/internal/crypto/curve_25519.go
  50. 0 0
      psiphon/common/quic/gquic-go/internal/crypto/hkdf.go
  51. 1 1
      psiphon/common/quic/gquic-go/internal/crypto/key_derivation.go
  52. 1 1
      psiphon/common/quic/gquic-go/internal/crypto/key_derivation_quic_crypto.go
  53. 0 0
      psiphon/common/quic/gquic-go/internal/crypto/key_exchange.go
  54. 1 1
      psiphon/common/quic/gquic-go/internal/crypto/null_aead.go
  55. 1 1
      psiphon/common/quic/gquic-go/internal/crypto/null_aead_aesgcm.go
  56. 1 1
      psiphon/common/quic/gquic-go/internal/crypto/null_aead_fnv128a.go
  57. 0 0
      psiphon/common/quic/gquic-go/internal/crypto/server_proof.go
  58. 3 3
      psiphon/common/quic/gquic-go/internal/flowcontrol/base_flow_controller.go
  59. 4 4
      psiphon/common/quic/gquic-go/internal/flowcontrol/connection_flow_controller.go
  60. 1 1
      psiphon/common/quic/gquic-go/internal/flowcontrol/interface.go
  61. 4 4
      psiphon/common/quic/gquic-go/internal/flowcontrol/stream_flow_controller.go
  62. 0 0
      psiphon/common/quic/gquic-go/internal/handshake/cookie_generator.go
  63. 0 0
      psiphon/common/quic/gquic-go/internal/handshake/cookie_protector.go
  64. 4 4
      psiphon/common/quic/gquic-go/internal/handshake/crypto_setup_client.go
  65. 19 4
      psiphon/common/quic/gquic-go/internal/handshake/crypto_setup_server.go
  66. 2 2
      psiphon/common/quic/gquic-go/internal/handshake/crypto_setup_tls.go
  67. 0 0
      psiphon/common/quic/gquic-go/internal/handshake/crypto_stream_conn.go
  68. 2 2
      psiphon/common/quic/gquic-go/internal/handshake/ephermal_cache.go
  69. 3 3
      psiphon/common/quic/gquic-go/internal/handshake/handshake_message.go
  70. 2 2
      psiphon/common/quic/gquic-go/internal/handshake/interface.go
  71. 3 0
      psiphon/common/quic/gquic-go/internal/handshake/mockgen.go
  72. 1 1
      psiphon/common/quic/gquic-go/internal/handshake/server_config.go
  73. 3 3
      psiphon/common/quic/gquic-go/internal/handshake/server_config_client.go
  74. 0 0
      psiphon/common/quic/gquic-go/internal/handshake/tags.go
  75. 2 2
      psiphon/common/quic/gquic-go/internal/handshake/tls_extension.go
  76. 3 3
      psiphon/common/quic/gquic-go/internal/handshake/tls_extension_handler_client.go
  77. 3 3
      psiphon/common/quic/gquic-go/internal/handshake/tls_extension_handler_server.go
  78. 3 3
      psiphon/common/quic/gquic-go/internal/handshake/transport_parameters.go
  79. 0 0
      psiphon/common/quic/gquic-go/internal/protocol/connection_id.go
  80. 0 0
      psiphon/common/quic/gquic-go/internal/protocol/encryption_level.go
  81. 0 0
      psiphon/common/quic/gquic-go/internal/protocol/packet_number.go
  82. 0 0
      psiphon/common/quic/gquic-go/internal/protocol/perspective.go
  83. 0 0
      psiphon/common/quic/gquic-go/internal/protocol/protocol.go
  84. 0 0
      psiphon/common/quic/gquic-go/internal/protocol/server_parameters.go
  85. 0 0
      psiphon/common/quic/gquic-go/internal/protocol/stream_id.go
  86. 0 0
      psiphon/common/quic/gquic-go/internal/protocol/version.go
  87. 0 0
      psiphon/common/quic/gquic-go/internal/utils/atomic_bool.go
  88. 0 0
      psiphon/common/quic/gquic-go/internal/utils/byteinterval_linkedlist.go
  89. 0 0
      psiphon/common/quic/gquic-go/internal/utils/byteorder.go
  90. 0 0
      psiphon/common/quic/gquic-go/internal/utils/byteorder_big_endian.go
  91. 0 0
      psiphon/common/quic/gquic-go/internal/utils/byteorder_little_endian.go
  92. 0 0
      psiphon/common/quic/gquic-go/internal/utils/float16.go
  93. 0 0
      psiphon/common/quic/gquic-go/internal/utils/gen.go
  94. 0 0
      psiphon/common/quic/gquic-go/internal/utils/host.go
  95. 1 1
      psiphon/common/quic/gquic-go/internal/utils/log.go
  96. 1 1
      psiphon/common/quic/gquic-go/internal/utils/minmax.go
  97. 1 1
      psiphon/common/quic/gquic-go/internal/utils/packet_interval.go
  98. 0 0
      psiphon/common/quic/gquic-go/internal/utils/packetinterval_linkedlist.go
  99. 1 1
      psiphon/common/quic/gquic-go/internal/utils/streamframe_interval.go
  100. 0 0
      psiphon/common/quic/gquic-go/internal/utils/timer.go

+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/LICENSE → psiphon/common/quic/gquic-go/LICENSE


+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/README.md → psiphon/common/quic/gquic-go/README.md


+ 2 - 2
vendor/github.com/lucas-clemente/quic-go/buffer_pool.go → psiphon/common/quic/gquic-go/buffer_pool.go

@@ -1,9 +1,9 @@
-package quic
+package gquic
 
 import (
 	"sync"
 
-	"github.com/lucas-clemente/quic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
 )
 
 var bufferPool sync.Pool

+ 23 - 13
vendor/github.com/lucas-clemente/quic-go/client.go → psiphon/common/quic/gquic-go/client.go

@@ -1,4 +1,4 @@
-package quic
+package gquic
 
 import (
 	"bytes"
@@ -9,12 +9,12 @@ import (
 	"net"
 	"sync"
 
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/handshake"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/utils"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/wire"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/qerr"
 	"github.com/bifurcation/mint"
-	"github.com/lucas-clemente/quic-go/internal/handshake"
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/utils"
-	"github.com/lucas-clemente/quic-go/internal/wire"
-	"github.com/lucas-clemente/quic-go/qerr"
 )
 
 type client struct {
@@ -124,24 +124,23 @@ func dialContext(
 	config *Config,
 	createdPacketConn bool,
 ) (Session, error) {
-
 	// [Psiphon]
 	// We call DialContext as we need to create a custom net.PacketConn.
 	// There is one custom net.PacketConn per QUIC connection, which
 	// satisfies the gQUIC 44 constraint.
 	config = populateClientConfig(config, true)
 	/*
-		config = populateClientConfig(config, createdPacketConn)
-		if !createdPacketConn {
-			for _, v := range config.Versions {
-				if v == protocol.Version44 {
-					return nil, errors.New("Cannot multiplex connections using gQUIC 44, see https://groups.google.com/a/chromium.org/forum/#!topic/proto-quic/pE9NlLLjizE. Please disable gQUIC 44 in the quic.Config, or use DialAddr")
+			config = populateClientConfig(config, createdPacketConn)
+			if !createdPacketConn {
+				for _, v := range config.Versions {
+					if v == protocol.Version44 {
+						return nil, errors.New("Cannot multiplex connections using gQUIC 44, see https://groups.google.com/a/chromium.org/forum/#!topic/proto-quic/pE9NlLLjizE. Please disable gQUIC 44 in the quic.Config, or use DialAddr")
+					}
 				}
 			}
 		}
 	*/
 	// [Psiphon]
-
 	packetHandlers, err := getMultiplexer().AddConn(pconn, config.ConnectionIDLength)
 	if err != nil {
 		return nil, err
@@ -417,6 +416,17 @@ func (c *client) handlePacketImpl(p *receivedPacket) error {
 			c.handleRetryPacket(p.header)
 			return nil
 		case protocol.PacketTypeHandshake, protocol.PacketType0RTT:
+
+		// [Psiphon]
+		// The fix in https://github.com/lucas-clemente/quic-go/commit/386b77f422028fe86aae7ae9c017ca2c692c8184 must
+		// also be applied here.
+		case protocol.PacketTypeInitial:
+			if p.header.Version == protocol.Version44 {
+				break
+			}
+			fallthrough
+		// [Psiphon]
+
 		default:
 			return fmt.Errorf("Received unsupported packet type: %s", p.header.Type)
 		}

+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/conn.go → psiphon/common/quic/gquic-go/conn.go

@@ -1,4 +1,4 @@
-package quic
+package gquic
 
 import (
 	"net"

+ 4 - 4
vendor/github.com/lucas-clemente/quic-go/crypto_stream.go → psiphon/common/quic/gquic-go/crypto_stream.go

@@ -1,11 +1,11 @@
-package quic
+package gquic
 
 import (
 	"io"
 
-	"github.com/lucas-clemente/quic-go/internal/flowcontrol"
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/wire"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/flowcontrol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/wire"
 )
 
 type cryptoStream interface {

+ 3 - 3
vendor/github.com/lucas-clemente/quic-go/frame_sorter.go → psiphon/common/quic/gquic-go/frame_sorter.go

@@ -1,10 +1,10 @@
-package quic
+package gquic
 
 import (
 	"errors"
 
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/utils"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/utils"
 )
 
 type frameSorter struct {

+ 3 - 3
vendor/github.com/lucas-clemente/quic-go/framer.go → psiphon/common/quic/gquic-go/framer.go

@@ -1,10 +1,10 @@
-package quic
+package gquic
 
 import (
 	"sync"
 
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/wire"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/wire"
 )
 
 type framer struct {

+ 12 - 9
vendor/github.com/lucas-clemente/quic-go/h2quic/client.go → psiphon/common/quic/gquic-go/h2quic/client.go

@@ -10,14 +10,14 @@ import (
 	"strings"
 	"sync"
 
-	"golang.org/x/net/http2"
-	"golang.org/x/net/http2/hpack"
-	"golang.org/x/net/idna"
-
-	quic "github.com/lucas-clemente/quic-go"
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/utils"
-	"github.com/lucas-clemente/quic-go/qerr"
+	"github.com/Psiphon-Labs/net/http2"
+	"github.com/Psiphon-Labs/net/http2/hpack"
+	"github.com/Psiphon-Labs/net/idna"
+
+	quic "github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/utils"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/qerr"
 )
 
 type roundTripperOpts struct {
@@ -40,7 +40,7 @@ type client struct {
 	dialer       func(network, addr string, tlsCfg *tls.Config, cfg *quic.Config) (quic.Session, error)
 
 	// [Psiphon]
-	// Fix Close-while-dialing race condition by synchronizing access to
+	// Fix close-while-dialing race condition by synchronizing access to
 	// client.session and adding a closed flag to indicate if the client was
 	// closed while a dial was in progress.
 	sessionMutex sync.Mutex
@@ -91,7 +91,10 @@ func newClient(
 // dial dials the connection
 func (c *client) dial() error {
 	var err error
+
+	// [Psiphon]
 	var session quic.Session
+
 	if c.dialer != nil {
 		session, err = c.dialer("udp", c.hostname, c.tlsConf, c.config)
 	} else {

+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/h2quic/gzipreader.go → psiphon/common/quic/gquic-go/h2quic/gzipreader.go


+ 2 - 2
vendor/github.com/lucas-clemente/quic-go/h2quic/request.go → psiphon/common/quic/gquic-go/h2quic/request.go

@@ -8,7 +8,7 @@ import (
 	"strconv"
 	"strings"
 
-	"golang.org/x/net/http2/hpack"
+	"github.com/Psiphon-Labs/net/http2/hpack"
 )
 
 func requestFromHeaders(headers []hpack.HeaderField) (*http.Request, error) {
@@ -41,7 +41,7 @@ func requestFromHeaders(headers []hpack.HeaderField) (*http.Request, error) {
 		return nil, errors.New(":path, :authority and :method must not be empty")
 	}
 
-	u, err := url.Parse(path)
+	u, err := url.ParseRequestURI(path)
 	if err != nil {
 		return nil, err
 	}

+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/h2quic/request_body.go → psiphon/common/quic/gquic-go/h2quic/request_body.go

@@ -3,7 +3,7 @@ package h2quic
 import (
 	"io"
 
-	quic "github.com/lucas-clemente/quic-go"
+	quic "github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go"
 )
 
 type requestBody struct {

+ 6 - 6
vendor/github.com/lucas-clemente/quic-go/h2quic/request_writer.go → psiphon/common/quic/gquic-go/h2quic/request_writer.go

@@ -8,13 +8,13 @@ import (
 	"strings"
 	"sync"
 
-	"golang.org/x/net/http/httpguts"
-	"golang.org/x/net/http2"
-	"golang.org/x/net/http2/hpack"
+	"github.com/Psiphon-Labs/net/http/httpguts"
+	"github.com/Psiphon-Labs/net/http2"
+	"github.com/Psiphon-Labs/net/http2/hpack"
 
-	quic "github.com/lucas-clemente/quic-go"
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/utils"
+	quic "github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/utils"
 )
 
 type requestWriter struct {

+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/h2quic/response.go → psiphon/common/quic/gquic-go/h2quic/response.go

@@ -9,7 +9,7 @@ import (
 	"strconv"
 	"strings"
 
-	"golang.org/x/net/http2"
+	"github.com/Psiphon-Labs/net/http2"
 )
 
 // copied from net/http2/transport.go

+ 5 - 5
vendor/github.com/lucas-clemente/quic-go/h2quic/response_writer.go → psiphon/common/quic/gquic-go/h2quic/response_writer.go

@@ -7,11 +7,11 @@ import (
 	"strings"
 	"sync"
 
-	quic "github.com/lucas-clemente/quic-go"
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/utils"
-	"golang.org/x/net/http2"
-	"golang.org/x/net/http2/hpack"
+	"github.com/Psiphon-Labs/net/http2"
+	"github.com/Psiphon-Labs/net/http2/hpack"
+	quic "github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/utils"
 )
 
 type responseWriter struct {

+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/h2quic/response_writer_closenotifier.go → psiphon/common/quic/gquic-go/h2quic/response_writer_closenotifier.go


+ 2 - 2
vendor/github.com/lucas-clemente/quic-go/h2quic/roundtrip.go → psiphon/common/quic/gquic-go/h2quic/roundtrip.go

@@ -9,9 +9,9 @@ import (
 	"strings"
 	"sync"
 
-	quic "github.com/lucas-clemente/quic-go"
+	quic "github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go"
 
-	"golang.org/x/net/http/httpguts"
+	"github.com/Psiphon-Labs/net/http/httpguts"
 )
 
 type roundTripCloser interface {

+ 6 - 6
vendor/github.com/lucas-clemente/quic-go/h2quic/server.go → psiphon/common/quic/gquic-go/h2quic/server.go

@@ -12,12 +12,12 @@ import (
 	"sync/atomic"
 	"time"
 
-	quic "github.com/lucas-clemente/quic-go"
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/utils"
-	"github.com/lucas-clemente/quic-go/qerr"
-	"golang.org/x/net/http2"
-	"golang.org/x/net/http2/hpack"
+	"github.com/Psiphon-Labs/net/http2"
+	"github.com/Psiphon-Labs/net/http2/hpack"
+	quic "github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/utils"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/qerr"
 )
 
 type streamCreator interface {

+ 3 - 3
vendor/github.com/lucas-clemente/quic-go/interface.go → psiphon/common/quic/gquic-go/interface.go

@@ -1,4 +1,4 @@
-package quic
+package gquic
 
 import (
 	"context"
@@ -6,8 +6,8 @@ import (
 	"net"
 	"time"
 
-	"github.com/lucas-clemente/quic-go/internal/handshake"
-	"github.com/lucas-clemente/quic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/handshake"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
 )
 
 // The StreamID is the ID of a QUIC stream.

+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/ackhandler/gen.go → psiphon/common/quic/gquic-go/internal/ackhandler/gen.go


+ 2 - 2
vendor/github.com/lucas-clemente/quic-go/internal/ackhandler/interfaces.go → psiphon/common/quic/gquic-go/internal/ackhandler/interfaces.go

@@ -3,8 +3,8 @@ package ackhandler
 import (
 	"time"
 
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/wire"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/wire"
 )
 
 // SentPacketHandler handles ACKs received for outgoing packets

+ 2 - 2
vendor/github.com/lucas-clemente/quic-go/internal/ackhandler/packet.go → psiphon/common/quic/gquic-go/internal/ackhandler/packet.go

@@ -3,8 +3,8 @@ package ackhandler
 import (
 	"time"
 
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/wire"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/wire"
 )
 
 // A Packet is a packet

+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/ackhandler/packet_linkedlist.go → psiphon/common/quic/gquic-go/internal/ackhandler/packet_linkedlist.go


+ 4 - 4
vendor/github.com/lucas-clemente/quic-go/internal/ackhandler/received_packet_handler.go → psiphon/common/quic/gquic-go/internal/ackhandler/received_packet_handler.go

@@ -3,10 +3,10 @@ package ackhandler
 import (
 	"time"
 
-	"github.com/lucas-clemente/quic-go/internal/congestion"
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/utils"
-	"github.com/lucas-clemente/quic-go/internal/wire"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/congestion"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/utils"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/wire"
 )
 
 type receivedPacketHandler struct {

+ 4 - 4
vendor/github.com/lucas-clemente/quic-go/internal/ackhandler/received_packet_history.go → psiphon/common/quic/gquic-go/internal/ackhandler/received_packet_history.go

@@ -1,10 +1,10 @@
 package ackhandler
 
 import (
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/utils"
-	"github.com/lucas-clemente/quic-go/internal/wire"
-	"github.com/lucas-clemente/quic-go/qerr"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/utils"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/wire"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/qerr"
 )
 
 // The receivedPacketHistory stores if a packet number has already been received.

+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/internal/ackhandler/retransmittable.go → psiphon/common/quic/gquic-go/internal/ackhandler/retransmittable.go

@@ -1,6 +1,6 @@
 package ackhandler
 
-import "github.com/lucas-clemente/quic-go/internal/wire"
+import "github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/wire"
 
 // Returns a new slice with all non-retransmittable frames deleted.
 func stripNonRetransmittableFrames(fs []wire.Frame) []wire.Frame {

+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/ackhandler/send_mode.go → psiphon/common/quic/gquic-go/internal/ackhandler/send_mode.go


+ 5 - 5
vendor/github.com/lucas-clemente/quic-go/internal/ackhandler/sent_packet_handler.go → psiphon/common/quic/gquic-go/internal/ackhandler/sent_packet_handler.go

@@ -6,11 +6,11 @@ import (
 	"math"
 	"time"
 
-	"github.com/lucas-clemente/quic-go/internal/congestion"
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/utils"
-	"github.com/lucas-clemente/quic-go/internal/wire"
-	"github.com/lucas-clemente/quic-go/qerr"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/congestion"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/utils"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/wire"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/qerr"
 )
 
 const (

+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/internal/ackhandler/sent_packet_history.go → psiphon/common/quic/gquic-go/internal/ackhandler/sent_packet_history.go

@@ -3,7 +3,7 @@ package ackhandler
 import (
 	"fmt"
 
-	"github.com/lucas-clemente/quic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
 )
 
 type sentPacketHistory struct {

+ 2 - 2
vendor/github.com/lucas-clemente/quic-go/internal/ackhandler/stop_waiting_manager.go → psiphon/common/quic/gquic-go/internal/ackhandler/stop_waiting_manager.go

@@ -1,8 +1,8 @@
 package ackhandler
 
 import (
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/wire"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/wire"
 )
 
 // This stopWaitingManager is not supposed to satisfy the StopWaitingManager interface, which is a remnant of the legacy AckHandler, and should be remove once we drop support for QUIC 33

+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/internal/congestion/bandwidth.go → psiphon/common/quic/gquic-go/internal/congestion/bandwidth.go

@@ -3,7 +3,7 @@ package congestion
 import (
 	"time"
 
-	"github.com/lucas-clemente/quic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
 )
 
 // Bandwidth of a connection

+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/congestion/clock.go → psiphon/common/quic/gquic-go/internal/congestion/clock.go


+ 2 - 2
vendor/github.com/lucas-clemente/quic-go/internal/congestion/cubic.go → psiphon/common/quic/gquic-go/internal/congestion/cubic.go

@@ -4,8 +4,8 @@ import (
 	"math"
 	"time"
 
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/utils"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/utils"
 )
 
 // This cubic implementation is based on the one found in Chromiums's QUIC

+ 2 - 2
vendor/github.com/lucas-clemente/quic-go/internal/congestion/cubic_sender.go → psiphon/common/quic/gquic-go/internal/congestion/cubic_sender.go

@@ -3,8 +3,8 @@ package congestion
 import (
 	"time"
 
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/utils"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/utils"
 )
 
 const (

+ 2 - 2
vendor/github.com/lucas-clemente/quic-go/internal/congestion/hybrid_slow_start.go → psiphon/common/quic/gquic-go/internal/congestion/hybrid_slow_start.go

@@ -3,8 +3,8 @@ package congestion
 import (
 	"time"
 
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/utils"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/utils"
 )
 
 // Note(pwestin): the magic clamping numbers come from the original code in

+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/internal/congestion/interface.go → psiphon/common/quic/gquic-go/internal/congestion/interface.go

@@ -3,7 +3,7 @@ package congestion
 import (
 	"time"
 
-	"github.com/lucas-clemente/quic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
 )
 
 // A SendAlgorithm performs congestion control and calculates the congestion window

+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/internal/congestion/prr_sender.go → psiphon/common/quic/gquic-go/internal/congestion/prr_sender.go

@@ -1,7 +1,7 @@
 package congestion
 
 import (
-	"github.com/lucas-clemente/quic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
 )
 
 // PrrSender implements the Proportional Rate Reduction (PRR) per RFC 6937

+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/internal/congestion/rtt_stats.go → psiphon/common/quic/gquic-go/internal/congestion/rtt_stats.go

@@ -3,7 +3,7 @@ package congestion
 import (
 	"time"
 
-	"github.com/lucas-clemente/quic-go/internal/utils"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/utils"
 )
 
 const (

+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/internal/congestion/stats.go → psiphon/common/quic/gquic-go/internal/congestion/stats.go

@@ -1,6 +1,6 @@
 package congestion
 
-import "github.com/lucas-clemente/quic-go/internal/protocol"
+import "github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
 
 type connectionStats struct {
 	slowstartPacketsLost protocol.PacketNumber

+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/internal/crypto/AEAD.go → psiphon/common/quic/gquic-go/internal/crypto/AEAD.go

@@ -1,6 +1,6 @@
 package crypto
 
-import "github.com/lucas-clemente/quic-go/internal/protocol"
+import "github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
 
 // An AEAD implements QUIC's authenticated encryption and associated data
 type AEAD interface {

+ 8 - 11
vendor/github.com/lucas-clemente/quic-go/internal/crypto/aesgcm12_aead.go → psiphon/common/quic/gquic-go/internal/crypto/aesgcm12_aead.go

@@ -1,13 +1,12 @@
 package crypto
 
 import (
+	"crypto/aes"
 	"crypto/cipher"
 	"encoding/binary"
 	"errors"
 
-	"github.com/lucas-clemente/aes12"
-
-	"github.com/lucas-clemente/quic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
 )
 
 type aeadAESGCM12 struct {
@@ -17,30 +16,28 @@ type aeadAESGCM12 struct {
 	decrypter cipher.AEAD
 }
 
+const gcmTagSize = 12
+
 var _ AEAD = &aeadAESGCM12{}
 
 // NewAEADAESGCM12 creates a AEAD using AES-GCM with 12 bytes tag size
-//
-// AES-GCM support is a bit hacky, since the go stdlib does not support 12 byte
-// tag size, and couples the cipher and aes packages closely.
-// See https://github.com/lucas-clemente/aes12.
 func NewAEADAESGCM12(otherKey []byte, myKey []byte, otherIV []byte, myIV []byte) (AEAD, error) {
 	if len(myKey) != 16 || len(otherKey) != 16 || len(myIV) != 4 || len(otherIV) != 4 {
 		return nil, errors.New("AES-GCM: expected 16-byte keys and 4-byte IVs")
 	}
-	encrypterCipher, err := aes12.NewCipher(myKey)
+	encrypterCipher, err := aes.NewCipher(myKey)
 	if err != nil {
 		return nil, err
 	}
-	encrypter, err := aes12.NewGCM(encrypterCipher)
+	encrypter, err := cipher.NewGCMWithTagSize(encrypterCipher, gcmTagSize)
 	if err != nil {
 		return nil, err
 	}
-	decrypterCipher, err := aes12.NewCipher(otherKey)
+	decrypterCipher, err := aes.NewCipher(otherKey)
 	if err != nil {
 		return nil, err
 	}
-	decrypter, err := aes12.NewGCM(decrypterCipher)
+	decrypter, err := cipher.NewGCMWithTagSize(decrypterCipher, gcmTagSize)
 	if err != nil {
 		return nil, err
 	}

+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/internal/crypto/aesgcm_aead.go → psiphon/common/quic/gquic-go/internal/crypto/aesgcm_aead.go

@@ -6,7 +6,7 @@ import (
 	"encoding/binary"
 	"errors"
 
-	"github.com/lucas-clemente/quic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
 )
 
 type aeadAESGCM struct {

+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/internal/crypto/cert_cache.go → psiphon/common/quic/gquic-go/internal/crypto/cert_cache.go

@@ -4,8 +4,8 @@ import (
 	"fmt"
 	"hash/fnv"
 
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
 	"github.com/hashicorp/golang-lru"
-	"github.com/lucas-clemente/quic-go/internal/protocol"
 )
 
 var (

+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/crypto/cert_chain.go → psiphon/common/quic/gquic-go/internal/crypto/cert_chain.go


+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/internal/crypto/cert_compression.go → psiphon/common/quic/gquic-go/internal/crypto/cert_compression.go

@@ -9,7 +9,7 @@ import (
 	"fmt"
 	"hash/fnv"
 
-	"github.com/lucas-clemente/quic-go/internal/utils"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/utils"
 )
 
 type entryType uint8

+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/crypto/cert_dict.go → psiphon/common/quic/gquic-go/internal/crypto/cert_dict.go


+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/internal/crypto/cert_manager.go → psiphon/common/quic/gquic-go/internal/crypto/cert_manager.go

@@ -7,7 +7,7 @@ import (
 	"hash/fnv"
 	"time"
 
-	"github.com/lucas-clemente/quic-go/qerr"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/qerr"
 )
 
 // CertManager manages the certificates sent by the server

+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/internal/crypto/cert_sets.go → psiphon/common/quic/gquic-go/internal/crypto/cert_sets.go

@@ -3,7 +3,7 @@ package crypto
 import (
 	"bytes"
 
-	"github.com/lucas-clemente/quic-go-certificates"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/quic-go-certificates"
 )
 
 type certSet [][]byte

+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/crypto/curve_25519.go → psiphon/common/quic/gquic-go/internal/crypto/curve_25519.go


+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/crypto/hkdf.go → psiphon/common/quic/gquic-go/internal/crypto/hkdf.go


+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/internal/crypto/key_derivation.go → psiphon/common/quic/gquic-go/internal/crypto/key_derivation.go

@@ -1,8 +1,8 @@
 package crypto
 
 import (
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
 	"github.com/bifurcation/mint"
-	"github.com/lucas-clemente/quic-go/internal/protocol"
 )
 
 const (

+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/internal/crypto/key_derivation_quic_crypto.go → psiphon/common/quic/gquic-go/internal/crypto/key_derivation_quic_crypto.go

@@ -5,7 +5,7 @@ import (
 	"crypto/sha256"
 	"io"
 
-	"github.com/lucas-clemente/quic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
 
 	"golang.org/x/crypto/hkdf"
 )

+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/crypto/key_exchange.go → psiphon/common/quic/gquic-go/internal/crypto/key_exchange.go


+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/internal/crypto/null_aead.go → psiphon/common/quic/gquic-go/internal/crypto/null_aead.go

@@ -1,6 +1,6 @@
 package crypto
 
-import "github.com/lucas-clemente/quic-go/internal/protocol"
+import "github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
 
 // NewNullAEAD creates a NullAEAD
 func NewNullAEAD(p protocol.Perspective, connID protocol.ConnectionID, v protocol.VersionNumber) (AEAD, error) {

+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/internal/crypto/null_aead_aesgcm.go → psiphon/common/quic/gquic-go/internal/crypto/null_aead_aesgcm.go

@@ -3,7 +3,7 @@ package crypto
 import (
 	"crypto"
 
-	"github.com/lucas-clemente/quic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
 )
 
 var quicVersion1Salt = []byte{0x9c, 0x10, 0x8f, 0x98, 0x52, 0x0a, 0x5c, 0x5c, 0x32, 0x96, 0x8e, 0x95, 0x0e, 0x8a, 0x2c, 0x5f, 0xe0, 0x6d, 0x6c, 0x38}

+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/internal/crypto/null_aead_fnv128a.go → psiphon/common/quic/gquic-go/internal/crypto/null_aead_fnv128a.go

@@ -6,7 +6,7 @@ import (
 	"fmt"
 	"hash/fnv"
 
-	"github.com/lucas-clemente/quic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
 )
 
 // nullAEAD handles not-yet encrypted packets

+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/crypto/server_proof.go → psiphon/common/quic/gquic-go/internal/crypto/server_proof.go


+ 3 - 3
vendor/github.com/lucas-clemente/quic-go/internal/flowcontrol/base_flow_controller.go → psiphon/common/quic/gquic-go/internal/flowcontrol/base_flow_controller.go

@@ -4,9 +4,9 @@ import (
 	"sync"
 	"time"
 
-	"github.com/lucas-clemente/quic-go/internal/congestion"
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/utils"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/congestion"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/utils"
 )
 
 type baseFlowController struct {

+ 4 - 4
vendor/github.com/lucas-clemente/quic-go/internal/flowcontrol/connection_flow_controller.go → psiphon/common/quic/gquic-go/internal/flowcontrol/connection_flow_controller.go

@@ -3,10 +3,10 @@ package flowcontrol
 import (
 	"fmt"
 
-	"github.com/lucas-clemente/quic-go/internal/congestion"
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/utils"
-	"github.com/lucas-clemente/quic-go/qerr"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/congestion"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/utils"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/qerr"
 )
 
 type connectionFlowController struct {

+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/internal/flowcontrol/interface.go → psiphon/common/quic/gquic-go/internal/flowcontrol/interface.go

@@ -1,6 +1,6 @@
 package flowcontrol
 
-import "github.com/lucas-clemente/quic-go/internal/protocol"
+import "github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
 
 type flowController interface {
 	// for sending

+ 4 - 4
vendor/github.com/lucas-clemente/quic-go/internal/flowcontrol/stream_flow_controller.go → psiphon/common/quic/gquic-go/internal/flowcontrol/stream_flow_controller.go

@@ -3,10 +3,10 @@ package flowcontrol
 import (
 	"fmt"
 
-	"github.com/lucas-clemente/quic-go/internal/congestion"
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/utils"
-	"github.com/lucas-clemente/quic-go/qerr"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/congestion"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/utils"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/qerr"
 )
 
 type streamFlowController struct {

+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/handshake/cookie_generator.go → psiphon/common/quic/gquic-go/internal/handshake/cookie_generator.go


+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/handshake/cookie_protector.go → psiphon/common/quic/gquic-go/internal/handshake/cookie_protector.go


+ 4 - 4
vendor/github.com/lucas-clemente/quic-go/internal/handshake/crypto_setup_client.go → psiphon/common/quic/gquic-go/internal/handshake/crypto_setup_client.go

@@ -11,10 +11,10 @@ import (
 	"sync"
 	"time"
 
-	"github.com/lucas-clemente/quic-go/internal/crypto"
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/utils"
-	"github.com/lucas-clemente/quic-go/qerr"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/crypto"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/utils"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/qerr"
 )
 
 type cryptoSetupClient struct {

+ 19 - 4
vendor/github.com/lucas-clemente/quic-go/internal/handshake/crypto_setup_server.go → psiphon/common/quic/gquic-go/internal/handshake/crypto_setup_server.go

@@ -9,10 +9,10 @@ import (
 	"net"
 	"sync"
 
-	"github.com/lucas-clemente/quic-go/internal/crypto"
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/utils"
-	"github.com/lucas-clemente/quic-go/qerr"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/crypto"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/utils"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/qerr"
 )
 
 // QuicCryptoKeyDerivationFunction is used for key derivation
@@ -203,6 +203,14 @@ func (h *cryptoSetupServer) Open(dst, src []byte, packetNumber protocol.PacketNu
 	defer h.mutex.RUnlock()
 
 	if h.forwardSecureAEAD != nil {
+
+		// [Psiphon]
+		// Apply pending upstream fix: https://github.com/lucas-clemente/quic-go/commit/ffd84b0caad3d0214d0f407646c41dd140c22e8a.
+		if !h.receivedForwardSecurePacket {
+			dst = []byte{}
+		}
+		// [Psiphon]
+
 		res, err := h.forwardSecureAEAD.Open(dst, src, packetNumber, associatedData)
 		if err == nil {
 			if !h.receivedForwardSecurePacket { // this is the first forward secure packet we receive from the client
@@ -219,6 +227,13 @@ func (h *cryptoSetupServer) Open(dst, src []byte, packetNumber protocol.PacketNu
 		}
 	}
 	if h.secureAEAD != nil {
+
+		// [Psiphon]
+		if !h.receivedSecurePacket {
+			dst = []byte{}
+		}
+		// [Psiphon]
+
 		res, err := h.secureAEAD.Open(dst, src, packetNumber, associatedData)
 		if err == nil {
 			h.logger.Debugf("Received first secure packet. Stopping to accept unencrypted packets.")

+ 2 - 2
vendor/github.com/lucas-clemente/quic-go/internal/handshake/crypto_setup_tls.go → psiphon/common/quic/gquic-go/internal/handshake/crypto_setup_tls.go

@@ -6,9 +6,9 @@ import (
 	"io"
 	"sync"
 
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/crypto"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
 	"github.com/bifurcation/mint"
-	"github.com/lucas-clemente/quic-go/internal/crypto"
-	"github.com/lucas-clemente/quic-go/internal/protocol"
 )
 
 // KeyDerivationFunction is used for key derivation

+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/handshake/crypto_stream_conn.go → psiphon/common/quic/gquic-go/internal/handshake/crypto_stream_conn.go


+ 2 - 2
vendor/github.com/lucas-clemente/quic-go/internal/handshake/ephermal_cache.go → psiphon/common/quic/gquic-go/internal/handshake/ephermal_cache.go

@@ -4,8 +4,8 @@ import (
 	"sync"
 	"time"
 
-	"github.com/lucas-clemente/quic-go/internal/crypto"
-	"github.com/lucas-clemente/quic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/crypto"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
 )
 
 var (

+ 3 - 3
vendor/github.com/lucas-clemente/quic-go/internal/handshake/handshake_message.go → psiphon/common/quic/gquic-go/internal/handshake/handshake_message.go

@@ -7,9 +7,9 @@ import (
 	"io"
 	"sort"
 
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/utils"
-	"github.com/lucas-clemente/quic-go/qerr"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/utils"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/qerr"
 )
 
 // A HandshakeMessage is a handshake message

+ 2 - 2
vendor/github.com/lucas-clemente/quic-go/internal/handshake/interface.go → psiphon/common/quic/gquic-go/internal/handshake/interface.go

@@ -3,9 +3,9 @@ package handshake
 import (
 	"crypto/x509"
 
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/crypto"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
 	"github.com/bifurcation/mint"
-	"github.com/lucas-clemente/quic-go/internal/crypto"
-	"github.com/lucas-clemente/quic-go/internal/protocol"
 )
 
 // Sealer seals a packet

+ 3 - 0
psiphon/common/quic/gquic-go/internal/handshake/mockgen.go

@@ -0,0 +1,3 @@
+package handshake
+
+//go:generate sh -c "../mockgen_internal.sh handshake mock_mint_tls_test.go github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/handshake mintTLS"

+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/internal/handshake/server_config.go → psiphon/common/quic/gquic-go/internal/handshake/server_config.go

@@ -4,7 +4,7 @@ import (
 	"bytes"
 	"crypto/rand"
 
-	"github.com/lucas-clemente/quic-go/internal/crypto"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/crypto"
 )
 
 // ServerConfig is a server config

+ 3 - 3
vendor/github.com/lucas-clemente/quic-go/internal/handshake/server_config_client.go → psiphon/common/quic/gquic-go/internal/handshake/server_config_client.go

@@ -7,9 +7,9 @@ import (
 	"math"
 	"time"
 
-	"github.com/lucas-clemente/quic-go/internal/crypto"
-	"github.com/lucas-clemente/quic-go/internal/utils"
-	"github.com/lucas-clemente/quic-go/qerr"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/crypto"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/utils"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/qerr"
 )
 
 type serverConfigClient struct {

+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/handshake/tags.go → psiphon/common/quic/gquic-go/internal/handshake/tags.go


+ 2 - 2
vendor/github.com/lucas-clemente/quic-go/internal/handshake/tls_extension.go → psiphon/common/quic/gquic-go/internal/handshake/tls_extension.go

@@ -6,9 +6,9 @@ import (
 	"errors"
 	"fmt"
 
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/utils"
 	"github.com/bifurcation/mint"
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/utils"
 )
 
 type transportParameterID uint16

+ 3 - 3
vendor/github.com/lucas-clemente/quic-go/internal/handshake/tls_extension_handler_client.go → psiphon/common/quic/gquic-go/internal/handshake/tls_extension_handler_client.go

@@ -4,11 +4,11 @@ import (
 	"errors"
 	"fmt"
 
-	"github.com/lucas-clemente/quic-go/qerr"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/qerr"
 
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/utils"
 	"github.com/bifurcation/mint"
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/utils"
 )
 
 type extensionHandlerClient struct {

+ 3 - 3
vendor/github.com/lucas-clemente/quic-go/internal/handshake/tls_extension_handler_server.go → psiphon/common/quic/gquic-go/internal/handshake/tls_extension_handler_server.go

@@ -4,11 +4,11 @@ import (
 	"errors"
 	"fmt"
 
-	"github.com/lucas-clemente/quic-go/qerr"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/qerr"
 
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/utils"
 	"github.com/bifurcation/mint"
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/utils"
 )
 
 type extensionHandlerServer struct {

+ 3 - 3
vendor/github.com/lucas-clemente/quic-go/internal/handshake/transport_parameters.go → psiphon/common/quic/gquic-go/internal/handshake/transport_parameters.go

@@ -7,9 +7,9 @@ import (
 	"sort"
 	"time"
 
-	"github.com/lucas-clemente/quic-go/internal/protocol"
-	"github.com/lucas-clemente/quic-go/internal/utils"
-	"github.com/lucas-clemente/quic-go/qerr"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/utils"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/qerr"
 )
 
 // errMalformedTag is returned when the tag value cannot be read

+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/protocol/connection_id.go → psiphon/common/quic/gquic-go/internal/protocol/connection_id.go


+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/protocol/encryption_level.go → psiphon/common/quic/gquic-go/internal/protocol/encryption_level.go


+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/protocol/packet_number.go → psiphon/common/quic/gquic-go/internal/protocol/packet_number.go


+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/protocol/perspective.go → psiphon/common/quic/gquic-go/internal/protocol/perspective.go


+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/protocol/protocol.go → psiphon/common/quic/gquic-go/internal/protocol/protocol.go


+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/protocol/server_parameters.go → psiphon/common/quic/gquic-go/internal/protocol/server_parameters.go


+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/protocol/stream_id.go → psiphon/common/quic/gquic-go/internal/protocol/stream_id.go


+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/protocol/version.go → psiphon/common/quic/gquic-go/internal/protocol/version.go


+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/utils/atomic_bool.go → psiphon/common/quic/gquic-go/internal/utils/atomic_bool.go


+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/utils/byteinterval_linkedlist.go → psiphon/common/quic/gquic-go/internal/utils/byteinterval_linkedlist.go


+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/utils/byteorder.go → psiphon/common/quic/gquic-go/internal/utils/byteorder.go


+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/utils/byteorder_big_endian.go → psiphon/common/quic/gquic-go/internal/utils/byteorder_big_endian.go


+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/utils/byteorder_little_endian.go → psiphon/common/quic/gquic-go/internal/utils/byteorder_little_endian.go


+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/utils/float16.go → psiphon/common/quic/gquic-go/internal/utils/float16.go


+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/utils/gen.go → psiphon/common/quic/gquic-go/internal/utils/gen.go


+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/utils/host.go → psiphon/common/quic/gquic-go/internal/utils/host.go


+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/internal/utils/log.go → psiphon/common/quic/gquic-go/internal/utils/log.go

@@ -125,7 +125,7 @@ func readLoggingEnv() LogLevel {
 	case "error":
 		return LogLevelError
 	default:
-		fmt.Fprintln(os.Stderr, "invalid quic-go log level, see https://github.com/lucas-clemente/quic-go/wiki/Logging")
+		fmt.Fprintln(os.Stderr, "invalid quic-go log level, see https://github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/wiki/Logging")
 		return LogLevelNothing
 	}
 }

+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/internal/utils/minmax.go → psiphon/common/quic/gquic-go/internal/utils/minmax.go

@@ -4,7 +4,7 @@ import (
 	"math"
 	"time"
 
-	"github.com/lucas-clemente/quic-go/internal/protocol"
+	"github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
 )
 
 // InfDuration is a duration of infinite length

+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/internal/utils/packet_interval.go → psiphon/common/quic/gquic-go/internal/utils/packet_interval.go

@@ -1,6 +1,6 @@
 package utils
 
-import "github.com/lucas-clemente/quic-go/internal/protocol"
+import "github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
 
 // PacketInterval is an interval from one PacketNumber to the other
 type PacketInterval struct {

+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/utils/packetinterval_linkedlist.go → psiphon/common/quic/gquic-go/internal/utils/packetinterval_linkedlist.go


+ 1 - 1
vendor/github.com/lucas-clemente/quic-go/internal/utils/streamframe_interval.go → psiphon/common/quic/gquic-go/internal/utils/streamframe_interval.go

@@ -1,6 +1,6 @@
 package utils
 
-import "github.com/lucas-clemente/quic-go/internal/protocol"
+import "github.com/Psiphon-Labs/psiphon-tunnel-core/psiphon/common/quic/gquic-go/internal/protocol"
 
 // ByteInterval is an interval from one ByteCount to the other
 type ByteInterval struct {

+ 0 - 0
vendor/github.com/lucas-clemente/quic-go/internal/utils/timer.go → psiphon/common/quic/gquic-go/internal/utils/timer.go


Some files were not shown because too many files changed in this diff