refactor: allow automatically wrap net/quic conn (#867)
See https://github.com/ooni/probe/issues/2219
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user