Skip to content

Commit

Permalink
Update quic-go to v0.49.0
Browse files Browse the repository at this point in the history
Small breaking change around Errors.Is for StreamError
  • Loading branch information
MarcoPolo committed Jan 23, 2025
1 parent 49c9549 commit 7694b19
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 7 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ require (
github.com/pion/webrtc/v4 v4.0.7
github.com/prometheus/client_golang v1.20.5
github.com/prometheus/client_model v0.6.1
github.com/quic-go/quic-go v0.48.2
github.com/quic-go/quic-go v0.49.0
github.com/quic-go/webtransport-go v0.8.1-0.20241018022711-4ac2c9250e66
github.com/raulk/go-watchdog v1.3.0
github.com/stretchr/testify v1.10.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -340,8 +340,8 @@ github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0leargg
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
github.com/quic-go/qpack v0.5.1 h1:giqksBPnT/HDtZ6VhtFKgoLOWmlyo9Ei6u9PqzIMbhI=
github.com/quic-go/qpack v0.5.1/go.mod h1:+PC4XFrEskIVkcLzpEkbLqq1uCoxPhQuvK5rH1ZgaEg=
github.com/quic-go/quic-go v0.48.2 h1:wsKXZPeGWpMpCGSWqOcqpW2wZYic/8T3aqiOID0/KWE=
github.com/quic-go/quic-go v0.48.2/go.mod h1:yBgs3rWBOADpga7F+jJsb6Ybg1LSYiQvwWlLX+/6HMs=
github.com/quic-go/quic-go v0.49.0 h1:w5iJHXwHxs1QxyBv1EHKuC50GX5to8mJAxvtnttJp94=
github.com/quic-go/quic-go v0.49.0/go.mod h1:s2wDnmCdooUQBmQfpUSTCYBl1/D4FcqbULMMkASvR6s=
github.com/quic-go/webtransport-go v0.8.1-0.20241018022711-4ac2c9250e66 h1:4WFk6u3sOT6pLa1kQ50ZVdm8BQFgJNA117cepZxtLIg=
github.com/quic-go/webtransport-go v0.8.1-0.20241018022711-4ac2c9250e66/go.mod h1:Vp72IJajgeOL6ddqrAhmp7IM9zbTcgkQxD/YdxrVwMw=
github.com/raulk/go-watchdog v1.3.0 h1:oUmdlHxdkXRJlwfG0O9omj8ukerm8MEQavSiDTEtBsk=
Expand Down
8 changes: 6 additions & 2 deletions p2p/transport/quic/stream.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,20 @@ type stream struct {
var _ network.MuxedStream = &stream{}

func (s *stream) Read(b []byte) (n int, err error) {
var streamErr *quic.StreamError

n, err = s.Stream.Read(b)
if err != nil && errors.Is(err, &quic.StreamError{}) {
if err != nil && errors.As(err, &streamErr) {
err = network.ErrReset
}
return n, err
}

func (s *stream) Write(b []byte) (n int, err error) {
var streamErr *quic.StreamError

n, err = s.Stream.Write(b)
if err != nil && errors.Is(err, &quic.StreamError{}) {
if err != nil && errors.As(err, &streamErr) {
err = network.ErrReset
}
return n, err
Expand Down
11 changes: 10 additions & 1 deletion p2p/transport/webtransport/crypto.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,15 @@ func generateCert(key ic.PrivKey, start, end time.Time) (*x509.Certificate, *ecd
return ca, caPrivateKey, nil
}

type ErrCertHashMismatch struct {
Expected []byte
Actual [][]byte
}

func (e ErrCertHashMismatch) Error() string {
return fmt.Sprintf("cert hash not found: %x (expected: %#x)", e.Expected, e.Actual)
}

func verifyRawCerts(rawCerts [][]byte, certHashes []multihash.DecodedMultihash) error {
if len(rawCerts) < 1 {
return errors.New("no cert")
Expand All @@ -105,7 +114,7 @@ func verifyRawCerts(rawCerts [][]byte, certHashes []multihash.DecodedMultihash)
for _, h := range certHashes {
digests = append(digests, h.Digest)
}
return fmt.Errorf("cert hash not found: %#x (expected: %#x)", hash, digests)
return ErrCertHashMismatch{Expected: hash[:], Actual: digests}
}

cert, err := x509.ParseCertificate(leaf)
Expand Down
6 changes: 5 additions & 1 deletion p2p/transport/webtransport/transport_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,11 @@ func TestHashVerification(t *testing.T) {
var trErr *quic.TransportError
require.ErrorAs(t, err, &trErr)
require.Equal(t, quic.TransportErrorCode(0x12a), trErr.ErrorCode)
require.Contains(t, errors.Unwrap(trErr).Error(), "cert hash not found")
var errMismatchHash libp2pwebtransport.ErrCertHashMismatch
require.ErrorAs(t, err, &errMismatchHash)

e := sha256.Sum256([]byte("foobar"))
require.EqualValues(t, e[:], errMismatchHash.Actual[0])
})

t.Run("fails when adding a wrong hash", func(t *testing.T) {
Expand Down

0 comments on commit 7694b19

Please sign in to comment.