Skip to content

Conversation

nickstenning
Copy link
Contributor

This implements an http.RoundTripper which transparently calculates RFC9530-compatible Content-Digest headers for outgoing requests. This header will be needed if we in future wish to sign request bodies with RFC9421.

This implements an http.RoundTripper which transparently calculates
RFC9530-compatible Content-Digest headers for outgoing requests. This
header will be needed if we in future wish to sign request bodies with
RFC9421.
Generating new byte buffers for every single processed request is quite
wasteful and generates a lot of work for the GC.

Similarly, the hash.Hash struct can be reused, although this provides
only a small additional benefit.

Before:

    goos: darwin
    goarch: arm64
    pkg: github.com/replicate/go/http/digest
    BenchmarkTransport-10               9200            123811 ns/op        1058.65 MB/s      525456 B/op         24 allocs/op
    PASS
    ok      github.com/replicate/go/http/digest     6.684s

After:

    goos: darwin
    goarch: arm64
    pkg: github.com/replicate/go/http/digest
    BenchmarkTransport-10              12412             95642 ns/op        1370.45 MB/s        1450 B/op         12 allocs/op
    PASS
    ok      github.com/replicate/go/http/digest     14.619s
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant