5e76c6ec92
We're bumping the experiment's version number because we changed the name of the field used to contain late/duplicate DNS responses. We have also changed the algorithm to determine `#dnsDiff`. However, the change should only impact how we log this information. Overall, here the idea is to provide users with a reasonably clear explanation of how the probe maps observations to blocking and accessible using expected/unexpected as the conceptual framework. Part of https://github.com/ooni/probe/issues/2237
51 lines
1.4 KiB
Go
51 lines
1.4 KiB
Go
package webconnectivity
|
|
|
|
//
|
|
// TLS analysis
|
|
//
|
|
|
|
import "github.com/ooni/probe-cli/v3/internal/model"
|
|
|
|
// analysisTLSToplevel is the toplevel analysis function for TLS.
|
|
//
|
|
// This algorithm aims to flag the TLS endpoints that failed unreasonably
|
|
// compared to what the TH has observed for the same endpoints.
|
|
func (tk *TestKeys) analysisTLSToplevel(logger model.Logger) {
|
|
// if we don't have a control result, do nothing.
|
|
if tk.Control == nil || len(tk.Control.TLSHandshake) <= 0 {
|
|
return
|
|
}
|
|
|
|
// walk the list of probe results and compare with TH results
|
|
for _, entry := range tk.TLSHandshakes {
|
|
// skip successful entries
|
|
failure := entry.Failure
|
|
if failure == nil {
|
|
continue // did not fail
|
|
}
|
|
epnt := entry.Address
|
|
|
|
// TODO(bassosimone,kelmenhorst): if, in the future, we choose to
|
|
// adapt this code to QUIC, we need to remember to treat EHOSTUNREACH
|
|
// and ENETUNREACH specially when the IP address is IPv6.
|
|
|
|
// obtain the corresponding endpoint
|
|
ctrl, found := tk.Control.TLSHandshake[epnt]
|
|
if !found {
|
|
continue // only the probe tested this, so hard to say anything...
|
|
}
|
|
if ctrl.Failure != nil {
|
|
// If the TH failed as well, don't set XBlockingFlags. Performing
|
|
// precise error mapping should be a job for the pipeline.
|
|
continue
|
|
}
|
|
logger.Warnf(
|
|
"TLS: unexpected failure %s for %s (see #%d)",
|
|
*failure,
|
|
epnt,
|
|
entry.TransactionID,
|
|
)
|
|
tk.BlockingFlags |= analysisFlagTLSBlocking
|
|
}
|
|
}
|