Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor(model/netx.go): TLSHandhaker now returns a TLSConn #1281

Merged
merged 8 commits into from
Sep 18, 2023

Conversation

bassosimone
Copy link
Contributor

@bassosimone bassosimone commented Sep 18, 2023

I am making progress with ooni/probe#2531 and I want to reactor model/netx.go such that the TLSHandshaker returns a model.TLSConn rather than a net.Conn.

Returning a net.Conn and documenting it is a model.TLSConn is bad compared to returning a model.TLSConn directly.

Note that we cannot apply the same transformation to netxlite's TLSDialer.DialTLSContext because such a method must be assignable to net/http and github.com/ooni/oohttp's Transport function also called DialTLSContext.

The fact that we need code to be assignable to the Transport function is what historically led the TLSHandshaker to return a net.Conn as well. But it was quite clear from the get go that this choice led to some quirks (and, in fact, this behavior was explicitly documented as such).

While there, slightly refactor internal/experiment/echcheck/utls.go to avoid storing the conn inside the handshaker and make sure the test coverage does not drop for this experiment.

While there, note that ooni/probe#2538 exists and commit a mitigation.

I am making progress with ooni/probe#2531
and I want to reactor model/netx.go such that the TLSHandshaker returns
a model.TLSConn rather than a net.Conn.

Returning a net.Conn and documenting it is a model.TLSConn is bad
compared to returning a model.TLSConn directly.

Note that we cannot apply the same transformation to netxlite's
TLSDialer.DialTLSContext because such a method must be assignable
to net/http and github.com/ooni/oohttp's Transport function also
called DialTLSContext.

The fact that we need code to be assignable to the Transport
function is what historically led the TLSHandshaker to return
a net.Conn as well. But it was quite clear from the get go
that this choice led to some quirks (and, in fact, this behavior
was explicitly documented as such). Not anymore.
@bassosimone bassosimone merged commit d0ea69d into master Sep 18, 2023
6 checks passed
@bassosimone bassosimone deleted the issue/2531 branch September 18, 2023 11:58
Murphy-OrangeMud pushed a commit to Murphy-OrangeMud/probe-cli that referenced this pull request Feb 13, 2024
I am making progress with ooni/probe#2531 and
I want to reactor model/netx.go such that the TLSHandshaker returns a
model.TLSConn rather than a net.Conn.

Returning a net.Conn and documenting it is a model.TLSConn is bad
compared to returning a model.TLSConn directly.

Note that we cannot apply the same transformation to netxlite's
TLSDialer.DialTLSContext because such a method must be assignable to
net/http and github.com/ooni/oohttp's Transport function also called
DialTLSContext.

The fact that we need code to be assignable to the Transport function is
what historically led the TLSHandshaker to return a net.Conn as well.
But it was quite clear from the get go that this choice led to some
quirks (and, in fact, this behavior was explicitly documented as such).

While there, slightly refactor `internal/experiment/echcheck/utls.go` to
avoid storing the conn inside the handshaker and make sure the test
coverage does not drop for this experiment.

While there, note that ooni/probe#2538 exists
and commit a mitigation.
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