Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: golang/net
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.12.0
Choose a base ref
...
head repository: golang/net
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v0.13.0
Choose a head ref
  • 18 commits
  • 46 files changed
  • 4 contributors

Commits on Jul 5, 2023

  1. http2: handle trailing colon in authorityAddr

    This change modifies the authorityAddr result for authorities with empty
    port information, such as "example.com:". Previously, such authorities
    passed through the function unchanged. This conflicts with the result
    from net/http's canonicalAddr, which returns "example.com:443" (for
    HTTPS).
    
    net/http's canonicalAddr result is passed to http2's upgradeFn (defined
    inside http2.configureTransports) from net/http's (*Transport).dialConn.
    The connection is then added to http2's cache under the canonicalAddr
    key. However, cache lookups are performed in (*Transport).RoundTripOpt
    using the result from authorityAddr applied directly to the input URL.
    The lookup thus fails if authorityAddr and canonicalAddr don't agree.
    
    http2's lookup error propagates upwards to net/http's
    (*Transport).roundTrip, where the request is retried. The end result is
    an infinite loop of the request being repeated, each time with a freshly
    dialed connection, that can only be stopped by a timeout.
    
    Aligning the results of http2's authorityAddr and net/http's
    canonicalAddr fixes the bug. While an authority with a trailing colon is
    invalid per URL specifications, I have personally come across
    misconfigured web servers emitting such URLs as redirects. This is how I
    discovered this issue in http2.
    
    Change-Id: If47aa61b8d256d76a3451090076e6eb5ff596c9e
    GitHub-Last-Rev: cb04701
    GitHub-Pull-Request: #170
    Reviewed-on: https://go-review.googlesource.com/c/net/+/487915
    Run-TryBot: Damien Neil <dneil@google.com>
    Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
    TryBot-Result: Gopher Robot <gobot@golang.org>
    Reviewed-by: Damien Neil <dneil@google.com>
    TheJokr authored and neild committed Jul 5, 2023
    Copy the full SHA
    a1613c2 View commit details

Commits on Jul 7, 2023

  1. dns/dnsmessage: update Parser docs

    The current API returns ErrSectionDone, not (nil,nil).
    
    Change-Id: I95c721c6c198e7302b9154bc39617b502e3d62f9
    GitHub-Last-Rev: c66bcff
    GitHub-Pull-Request: #181
    Reviewed-on: https://go-review.googlesource.com/c/net/+/507955
    Run-TryBot: Ian Lance Taylor <iant@google.com>
    Auto-Submit: Ian Lance Taylor <iant@google.com>
    Reviewed-by: Ian Lance Taylor <iant@google.com>
    TryBot-Result: Gopher Robot <gobot@golang.org>
    Reviewed-by: Damien Neil <dneil@google.com>
    mateusz834 authored and gopherbot committed Jul 7, 2023
    Copy the full SHA
    8126108 View commit details
  2. dns/dnsmessage: add fuzz test

    After CL 443215 pack(unpack(msg)) should never fail,
    so we can add a fuzz test to prove that.
    
    Change-Id: Ia2abfc30e2b2a492b4dd5de6ca6f29d2324bd737
    GitHub-Last-Rev: 1d9812a
    GitHub-Pull-Request: #177
    Reviewed-on: https://go-review.googlesource.com/c/net/+/500296
    Auto-Submit: Ian Lance Taylor <iant@golang.org>
    Reviewed-by: Joedian Reid <joedian@golang.org>
    TryBot-Result: Gopher Robot <gobot@golang.org>
    Reviewed-by: Damien Neil <dneil@google.com>
    Reviewed-by: Ian Lance Taylor <iant@golang.org>
    Run-TryBot: Ian Lance Taylor <iant@golang.org>
    Run-TryBot: Mateusz Poliwczak <mpoliwczak34@gmail.com>
    mateusz834 authored and gopherbot committed Jul 7, 2023
    Copy the full SHA
    d8f9c01 View commit details

Commits on Jul 11, 2023

  1. quic: fix typos in comments

    For golang/go#58547
    
    Change-Id: I79f06d22fc010bf2e339df47abed3df170d18339
    Reviewed-on: https://go-review.googlesource.com/c/net/+/506075
    Reviewed-by: Ian Lance Taylor <iant@google.com>
    TryBot-Result: Gopher Robot <gobot@golang.org>
    Run-TryBot: Damien Neil <dneil@google.com>
    neild committed Jul 11, 2023
    Copy the full SHA
    9475ce1 View commit details
  2. quic: tracking of received packets and acks to send

    RFC 9000, Section 13.2.
    
    For golang/go#58547
    
    Change-Id: I0aad4c03fabb9087964dc9030bb8777d5159360c
    Reviewed-on: https://go-review.googlesource.com/c/net/+/506595
    Run-TryBot: Damien Neil <dneil@google.com>
    Reviewed-by: Jonathan Amsterdam <jba@google.com>
    TryBot-Result: Gopher Robot <gobot@golang.org>
    neild committed Jul 11, 2023
    Copy the full SHA
    304cc91 View commit details

Commits on Jul 12, 2023

  1. quic: connection ids

    Each side of a QUIC connection chooses the connection IDs used by
    its peer. In our case, we use 8-byte random IDs.
    
    A connection has a list of connection IDs that it may receive
    packets on, and a list that it may send packets to. Add a minimal
    data structure for tracking these lists, and handling of the
    connection IDs tracked across Initial and Handshake packets.
    
    This does not yet handle post-handshake connection ID changes
    made in NEW_CONNECTION_ID and RETIRE_CONNECTION_ID frames.
    
    RFC 9000, Section 5.1.
    
    For golang/go#58547
    
    Change-Id: I3e059393cacafbcea04a1b4131c0c7dc28acad5e
    Reviewed-on: https://go-review.googlesource.com/c/net/+/506675
    Run-TryBot: Damien Neil <dneil@google.com>
    Reviewed-by: Jonathan Amsterdam <jba@google.com>
    TryBot-Result: Gopher Robot <gobot@golang.org>
    neild committed Jul 12, 2023
    Copy the full SHA
    57553cb View commit details

Commits on Jul 14, 2023

  1. quic: basic connection event loop

    Add the Conn type, representing a QUIC connection.
    
    A Conn's behavior is driven by an event loop goroutine.
    This goroutine owns most Conn state. External events
    (datagrams received, user operations such as writing to streams)
    send events to the loop goroutine on a message channel.
    
    The testConn type, used in tests, wraps a Conn and takes
    control of its event loop. The testConn permits tests to
    interact with a Conn synchronously, sending it events,
    observing the result, and controlling the Conn's view
    of time passing.
    
    Add a very minimal implementation of connection idle timeouts
    (RFC 9000, Section 10.1) to test the implementation of
    synthetic time.
    
    For golang/go#58547
    
    Change-Id: Ic517e5e7bb019f4a677f892a807ca0417d6e19b1
    Reviewed-on: https://go-review.googlesource.com/c/net/+/506678
    TryBot-Result: Gopher Robot <gobot@golang.org>
    Run-TryBot: Damien Neil <dneil@google.com>
    Reviewed-by: Jonathan Amsterdam <jba@google.com>
    neild committed Jul 14, 2023
    Copy the full SHA
    4a3f925 View commit details
  2. quic: print better stacks on SIGQUIT

    When handling an uncaught SIGQUIT (C-\), the runtime prints
    stacks with GOTRACEBACK=all. This is more detail than we need or want
    when debugging a hung test by killing it with C-\.
    
    Add a signal handler in tests to print stacks with GOTRACEBACK=all instead.
    
    For golang/go#58547
    
    Change-Id: I8b381cec41a645568aa2eb675ca7f936f35e145a
    Reviewed-on: https://go-review.googlesource.com/c/net/+/509016
    Run-TryBot: Damien Neil <dneil@google.com>
    TryBot-Result: Gopher Robot <gobot@golang.org>
    Reviewed-by: Jonathan Amsterdam <jba@google.com>
    neild committed Jul 14, 2023
    Copy the full SHA
    16cc77a View commit details

Commits on Jul 18, 2023

  1. quic: send and receive datagrams

    Add the ability for Conns to send and receive datagrams.
    No socket handling yet; this only functions in tests for now.
    
    Extend testConn to permit tests to send packets to Conns and
    observe the packets Conns send.
    
    There's a circular dependency here: We can't test Handshake and 1-RTT
    packets until we have the handshake implemented, but we can't
    implement the handshake without the ability to send and receive
    Handshake and 1-RTT packets. This CL adds the ability to send and
    receive those packets; tests for those paths will follow with the
    handshake implementation.
    
    For golang/go#58547
    
    Change-Id: I4e7f88f5f039baf7e01f68a53639022866786af9
    Reviewed-on: https://go-review.googlesource.com/c/net/+/509017
    Run-TryBot: Damien Neil <dneil@google.com>
    Reviewed-by: Jonathan Amsterdam <jba@google.com>
    TryBot-Result: Gopher Robot <gobot@golang.org>
    neild committed Jul 18, 2023
    Copy the full SHA
    0adcadf View commit details
  2. quic: transport parameter encoding and decoding

    Transport parameters are passed in the extension_data field of the
    quic_transport_parameters TLS extension.
    
    RFC 9000, Section 18.
    RFC 9001, Section 8.2.
    
    For golang/go#58547
    
    Change-Id: I294ab6cdef19256f5db02dc269e8b417b1d5e54b
    Reviewed-on: https://go-review.googlesource.com/c/net/+/510575
    Auto-Submit: Damien Neil <dneil@google.com>
    Reviewed-by: Jonathan Amsterdam <jba@google.com>
    Run-TryBot: Damien Neil <dneil@google.com>
    TryBot-Result: Gopher Robot <gobot@golang.org>
    neild authored and gopherbot committed Jul 18, 2023
    Copy the full SHA
    8db2ead View commit details
  3. quic: add pipe type

    Streams (including CRYPTO streams) are an ordered byte sequence.
    
    Both outgoing and incoming streams require random access to a portion
    of that sequence. Outbound packets may be lost, requiring us to
    resend the data in the lost packet. Inbound packets may arrive out
    of order.
    
    Add a "pipe" type as a building block for both inbound and outbound
    streams. A pipe is a window into a portion of a stream, permitting
    random read and write access within that window (unlike bufio.Reader
    or bufio.Writer).
    
    Pipes are implemented as a linked list of blocks.
    
    Block sizes are uniform and allocations are pooled,
    avoiding non-pool allocations in the steady state.
    
    Pipe memory consumption is proportional to the current window,
    and goes to zero when the window has been fully consumed
    (unlike bytes.Buffer).
    
    For golang/go#58547
    
    Change-Id: I0c16707552c9c46f31055daea2396590a924fc60
    Reviewed-on: https://go-review.googlesource.com/c/net/+/510615
    Run-TryBot: Damien Neil <dneil@google.com>
    Reviewed-by: Jonathan Amsterdam <jba@google.com>
    TryBot-Result: Gopher Robot <gobot@golang.org>
    neild committed Jul 18, 2023
    Copy the full SHA
    d0912d4 View commit details

Commits on Jul 21, 2023

  1. internal/quic: deflake TestConnTestConn

    Sending a message to a connection returns an error when the
    connection event loop had exited. This is unreliable, since
    a sent to the conn's message channel can succeed after the
    event loop exits, writing the message to the channel buffer.
    
    Drop the error return from Conn.sendMsg; it isn't useful,
    since it's always possible for the connection to exit with
    messages still in the channel buffer.
    
    Fixes golang/go#61485
    
    Change-Id: Ic8351f984df827af881cf7b6d93d97031d2e615c
    Reviewed-on: https://go-review.googlesource.com/c/net/+/511658
    TryBot-Result: Gopher Robot <gobot@golang.org>
    Reviewed-by: Jonathan Amsterdam <jba@google.com>
    Auto-Submit: Damien Neil <dneil@google.com>
    Run-TryBot: Damien Neil <dneil@google.com>
    neild authored and gopherbot committed Jul 21, 2023
    Copy the full SHA
    dd5bc96 View commit details
  2. quic: CRYPTO stream handling

    CRYPTO frames carry TLS handshake messages.
    
    Add a cryptoStream type which manages the TLS handshake stream,
    including retransmission of lost data, processing out-of-order
    received data, etc.
    
    For golang/go#58547
    
    Change-Id: I8defa38e22d9c1bb8753f3a44d5ae0853fa56de8
    Reviewed-on: https://go-review.googlesource.com/c/net/+/510616
    Reviewed-by: Jonathan Amsterdam <jba@google.com>
    Run-TryBot: Damien Neil <dneil@google.com>
    TryBot-Result: Gopher Robot <gobot@golang.org>
    neild committed Jul 21, 2023
    Copy the full SHA
    5e678bb View commit details

Commits on Jul 27, 2023

  1. quic: tls handshake

    Exchange TLS handshake data in CRYPTO frames.
    Receive packet protection keys from the TLS layer.
    Discard packet protection keys as the handshake progresses.
    
    Send and receive HANDSHAKE_DONE frames (used by the server
    to inform the client of the handshake completing).
    
    Add a very minimal implementation of CONNECTION_CLOSE,
    just enough to let us write tests that trigger immediate
    close of connections.
    
    For golang/go#58547
    
    Change-Id: I77496ca65bd72977565733739d563eaa2bb7d8d3
    Reviewed-on: https://go-review.googlesource.com/c/net/+/510915
    Reviewed-by: Jonathan Amsterdam <jba@google.com>
    TryBot-Result: Gopher Robot <gobot@golang.org>
    Run-TryBot: Damien Neil <dneil@google.com>
    Auto-Submit: Damien Neil <dneil@google.com>
    neild authored and gopherbot committed Jul 27, 2023
    Copy the full SHA
    dd0aa33 View commit details
  2. quic: debug logging of packets

    Log every packet sent and received to stdout when
    GODEBUG=quiclogpackets=1.
    
    For golang/go#58547
    
    Change-Id: I904336017ea646ad6459557b44702bfe4c732ba9
    Reviewed-on: https://go-review.googlesource.com/c/net/+/513439
    Reviewed-by: Jonathan Amsterdam <jba@google.com>
    TryBot-Result: Gopher Robot <gobot@golang.org>
    Run-TryBot: Damien Neil <dneil@google.com>
    neild committed Jul 27, 2023
    Copy the full SHA
    08001cc View commit details

Commits on Jul 28, 2023

  1. quic: fill out connection id handling

    Add support for sending and receiving NEW_CONNECTION_ID
    and RETIRE_CONNECTION_ID frames. Keep the peer supplied
    with up to 4 connection IDs. Retire connection IDs as
    required by the peer.
    
    Support connection IDs provided in the preferred_address
    transport parameter.
    
    RFC 9000, Section 5.1.
    
    For golang/go#58547
    
    Change-Id: I015a69b94c40a6396e9f117a92c88acaf83c594e
    Reviewed-on: https://go-review.googlesource.com/c/net/+/513440
    TryBot-Result: Gopher Robot <gobot@golang.org>
    Run-TryBot: Damien Neil <dneil@google.com>
    Reviewed-by: Jonathan Amsterdam <jba@google.com>
    neild committed Jul 28, 2023
    Copy the full SHA
    bd8ac9e View commit details

Commits on Jul 31, 2023

  1. quic: gate and queue synchronization primitives

    Add a form of monitor (in the sense of the synchronization primitive)
    for controlling access to queues and streams.
    
    We call this a "gate". A gate acts as a mutex and condition variable
    with one bit of state. A gate may be locked and unlocked. Lock
    operations may optionally block on the gate condition being set.
    Unlock operations always record the new value of the condition.
    
    Gates play nicely with contexts.
    
    Unlike traditional condition variables, gates do not suffer from
    spurious wakeups: A goroutine waiting for a gate condition is not
    woken before the condition is set.
    
    Gates are inspired by the queue design from Bryan Mills's talk,
    Rethinking Classical Concurrency Patterns.
    
    Add a queue implemented with a gate.
    
    For golang/go#58547
    
    Change-Id: Ibec6d1f29a2c03a7184fca7392ed5639f96b6485
    Reviewed-on: https://go-review.googlesource.com/c/net/+/513955
    TryBot-Result: Gopher Robot <gobot@golang.org>
    Reviewed-by: Jonathan Amsterdam <jba@google.com>
    Run-TryBot: Damien Neil <dneil@google.com>
    neild committed Jul 31, 2023
    Copy the full SHA
    63fe334 View commit details

Commits on Aug 1, 2023

  1. html: only render content literally in the HTML namespace

    Per the WHATWG HTML specification, section 13.3, only append the literal
    content of a text node if we are in the HTML namespace.
    
    Thanks to Mohammad Thoriq Aziz for reporting this issue.
    
    Fixes golang/go#61615
    Fixes CVE-2023-3978
    
    Change-Id: I332152904d4e7646bd2441602bcbe591fc655fa4
    Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/1942896
    Reviewed-by: Tatiana Bradley <tatianabradley@google.com>
    Run-TryBot: Roland Shoemaker <bracewell@google.com>
    Reviewed-by: Damien Neil <dneil@google.com>
    TryBot-Result: Security TryBots <security-trybots@go-security-trybots.iam.gserviceaccount.com>
    Reviewed-on: https://go-review.googlesource.com/c/net/+/514896
    Reviewed-by: Roland Shoemaker <roland@golang.org>
    TryBot-Result: Gopher Robot <gobot@golang.org>
    Run-TryBot: Damien Neil <dneil@google.com>
    rolandshoemaker authored and neild committed Aug 1, 2023
    Copy the full SHA
    8ffa475 View commit details

This comparison is taking too long to generate.

Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.

You can try running this command locally to see the comparison on your machine:
git diff v0.12.0...v0.13.0