refactor: allow automatically wrap net/quic conn (#867)

See https://github.com/ooni/probe/issues/2219
This commit is contained in:
DecFox
2022-08-18 00:28:06 +05:30
committed by GitHub
parent e1d014e826
commit 097926c51f
12 changed files with 83 additions and 101 deletions
+1 -1
View File
@@ -224,7 +224,7 @@ func (d *dialerResolverWithTracing) DialContext(ctx context.Context, network, ad
trace.OnConnectDone(started, network, onlyhost, target, err, finished)
if err == nil {
conn = &dialerErrWrapperConn{conn}
return conn, nil
return trace.MaybeWrapNetConn(conn), nil
}
errorslist = append(errorslist, err)
}
+1
View File
@@ -135,6 +135,7 @@ func (d *quicDialerQUICGo) DialContext(ctx context.Context, network string,
}
tlsConfig = d.maybeApplyTLSDefaults(tlsConfig, udpAddr.Port)
trace := ContextTraceOrDefault(ctx)
pconn = trace.MaybeWrapUDPLikeConn(pconn)
started := trace.TimeNow()
trace.OnQUICHandshakeStart(started, address, quicConfig)
qconn, err := d.dialEarlyContext(
+11
View File
@@ -7,6 +7,7 @@ package netxlite
import (
"context"
"crypto/tls"
"net"
"time"
"github.com/lucas-clemente/quic-go"
@@ -50,6 +51,16 @@ func (*traceDefault) TimeNow() time.Time {
return time.Now()
}
// MaybeWrapNetConn implements model.Trace.MaybeWrapNetConn
func (*traceDefault) MaybeWrapNetConn(conn net.Conn) net.Conn {
return conn
}
// MaybeWrapUDPLikeConn implements model.Trace.MaybeWrapUDPLikeConn
func (*traceDefault) MaybeWrapUDPLikeConn(conn model.UDPLikeConn) model.UDPLikeConn {
return conn
}
// OnDNSRoundTripForLookupHost implements model.Trace.OnDNSRoundTripForLookupHost.
func (*traceDefault) OnDNSRoundTripForLookupHost(started time.Time, reso model.Resolver, query model.DNSQuery,
response model.DNSResponse, addrs []string, err error, finished time.Time) {