ooni-probe-cli/internal/netxlite
Simone Basso b872dd0e1e
fix(netxlite): HTTPSSvc: better no_answer checks (#727)
I've seen some measurements returning some IP addresses for HTTPSSvc
queries but not returning any ALPN value.

For example:

```
% d4
decoding DNS round trip 0:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57768
;; flags: rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;psiphon.ca.                    IN      HTTPS

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57768
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;psiphon.ca.                    IN      HTTPS
;; ANSWER SECTION:
psiphon.ca.             121     IN      A       31.13.85.53
```

Now, the response is clearly bogus. At the time of this writing that
IP address belongs to Facebook. This measurement has been collected in
China, so it's expected for the GFW to behave like this.

Yet, I don't feel like it's accurate to report this measurement as a
"no answer" response. Rather, this response is a valid one containing
a clearly invalid IP address and should be flagged as such.

Originally: 57a023bcf4

See https://github.com/ooni/probe/issues/2096
2022-05-13 19:00:51 +02:00
..
filtering feature: merge measurex and netx archival layer (1/N) (#663) 2022-01-14 12:13:10 +01:00
internal feat: add support for OpenBSD (#703) 2022-03-08 12:25:33 +01:00
mocks cli: upgrade to lucas-clemente/quic-go@v0.27.0 (#715) 2022-05-06 12:24:03 +02:00
quictesting [forwardport] fix: avoid http3 for dns.google and www.google.com (#593) (#594) 2021-11-12 14:43:28 +01:00
bogon_test.go chore: import improved bogons handling code (#723) 2022-05-13 15:32:47 +02:00
bogon.go chore: import improved bogons handling code (#723) 2022-05-13 15:32:47 +02:00
certifi_test.go netxlite: improve docs, tests, and code quality (#493) 2021-09-08 21:19:51 +02:00
certifi.go chore: support go1.18 and update dependencies (#708) 2022-04-12 11:43:12 +02:00
classify_test.go cleanup: merge legacy errorsx in netxlite and hide classifiers (#655) 2022-01-07 17:31:21 +01:00
classify.go cleanup: merge legacy errorsx in netxlite and hide classifiers (#655) 2022-01-07 17:31:21 +01:00
dialer_test.go chore: support go1.18 and update dependencies (#708) 2022-04-12 11:43:12 +02:00
dialer.go cleanup: merge legacy errorsx in netxlite and hide classifiers (#655) 2022-01-07 17:31:21 +01:00
dnsdecoder_test.go refactor: merge dnsx and errorsx into netxlite (#517) 2021-09-28 12:42:01 +02:00
dnsdecoder.go fix(netxlite): HTTPSSvc: better no_answer checks (#727) 2022-05-13 19:00:51 +02:00
dnsencoder_test.go refactor: merge dnsx and errorsx into netxlite (#517) 2021-09-28 12:42:01 +02:00
dnsencoder.go refactor: interfaces and data types into the model package (#642) 2022-01-03 13:53:23 +01:00
dnsoverhttps_test.go refactor: interfaces and data types into the model package (#642) 2022-01-03 13:53:23 +01:00
dnsoverhttps.go refactor: interfaces and data types into the model package (#642) 2022-01-03 13:53:23 +01:00
dnsovertcp_test.go fix(reduceErrors): return error when given an empty list (#675) 2022-01-26 12:18:36 +01:00
dnsovertcp.go refactor: interfaces and data types into the model package (#642) 2022-01-03 13:53:23 +01:00
dnsoverudp_test.go refactor: interfaces and data types into the model package (#642) 2022-01-03 13:53:23 +01:00
dnsoverudp.go refactor: interfaces and data types into the model package (#642) 2022-01-03 13:53:23 +01:00
dnstransport.go refactor: interfaces and data types into the model package (#642) 2022-01-03 13:53:23 +01:00
doc.go refactor: interfaces and data types into the model package (#642) 2022-01-03 13:53:23 +01:00
errno_darwin_test.go chore: support go1.18 and update dependencies (#708) 2022-04-12 11:43:12 +02:00
errno_darwin.go chore: support go1.18 and update dependencies (#708) 2022-04-12 11:43:12 +02:00
errno_freebsd_test.go chore: support go1.18 and update dependencies (#708) 2022-04-12 11:43:12 +02:00
errno_freebsd.go chore: support go1.18 and update dependencies (#708) 2022-04-12 11:43:12 +02:00
errno_linux_test.go chore: support go1.18 and update dependencies (#708) 2022-04-12 11:43:12 +02:00
errno_linux.go chore: support go1.18 and update dependencies (#708) 2022-04-12 11:43:12 +02:00
errno_openbsd_test.go chore: support go1.18 and update dependencies (#708) 2022-04-12 11:43:12 +02:00
errno_openbsd.go chore: support go1.18 and update dependencies (#708) 2022-04-12 11:43:12 +02:00
errno_windows_test.go chore: support go1.18 and update dependencies (#708) 2022-04-12 11:43:12 +02:00
errno_windows.go chore: support go1.18 and update dependencies (#708) 2022-04-12 11:43:12 +02:00
errno.go chore: support go1.18 and update dependencies (#708) 2022-04-12 11:43:12 +02:00
errwrapper_test.go cleanup: merge legacy errorsx in netxlite and hide classifiers (#655) 2022-01-07 17:31:21 +01:00
errwrapper.go cleanup: merge legacy errorsx in netxlite and hide classifiers (#655) 2022-01-07 17:31:21 +01:00
http_test.go fix(reduceErrors): return error when given an empty list (#675) 2022-01-26 12:18:36 +01:00
http.go feature: merge measurex and netx archival layer (1/N) (#663) 2022-01-14 12:13:10 +01:00
http3_test.go cli: upgrade to lucas-clemente/quic-go@v0.27.0 (#715) 2022-05-06 12:24:03 +02:00
http3.go cli: upgrade to lucas-clemente/quic-go@v0.27.0 (#715) 2022-05-06 12:24:03 +02:00
integration_test.go feature: merge measurex and netx archival layer (1/N) (#663) 2022-01-14 12:13:10 +01:00
iox_test.go fix(netxlite): robust {ReadAll,Copy}Context with wrapped io.EOF (#661) 2022-01-12 14:26:10 +01:00
iox.go fix(netxlite): robust {ReadAll,Copy}Context with wrapped io.EOF (#661) 2022-01-12 14:26:10 +01:00
legacy.go cleanup: remove unnecessary legacy interfaces (#656) 2022-01-07 18:33:37 +01:00
operations.go doc(netxlite): revamp the documentation (#523) 2021-09-29 20:21:25 +02:00
parallelresolver_test.go feat(netxlite): implement parallel resolver (#724) 2022-05-13 17:36:58 +02:00
parallelresolver.go feat(netxlite): implement parallel resolver (#724) 2022-05-13 17:36:58 +02:00
quic_test.go chore: import improved bogons handling code (#723) 2022-05-13 15:32:47 +02:00
quic.go chore: import improved bogons handling code (#723) 2022-05-13 15:32:47 +02:00
quirks_test.go fix(netxlite): consolidate IPv4/IPv6 checking code (#726) 2022-05-13 18:49:18 +02:00
quirks.go fix(netxlite): consolidate IPv4/IPv6 checking code (#726) 2022-05-13 18:49:18 +02:00
resolver_test.go fix(netxlite): LookupHTTPS: short circuit IP addr (#725) 2022-05-13 18:26:15 +02:00
resolver.go fix(netxlite): LookupHTTPS: short circuit IP addr (#725) 2022-05-13 18:26:15 +02:00
serialresolver_test.go refactor: interfaces and data types into the model package (#642) 2022-01-03 13:53:23 +01:00
serialresolver.go feat(netxlite): implement parallel resolver (#724) 2022-05-13 17:36:58 +02:00
tls_test.go refactor: interfaces and data types into the model package (#642) 2022-01-03 13:53:23 +01:00
tls.go cleanup: merge legacy errorsx in netxlite and hide classifiers (#655) 2022-01-07 17:31:21 +01:00
tproxy.go refactor: interfaces and data types into the model package (#642) 2022-01-03 13:53:23 +01:00
utls_test.go refactor: interfaces and data types into the model package (#642) 2022-01-03 13:53:23 +01:00
utls.go refactor: interfaces and data types into the model package (#642) 2022-01-03 13:53:23 +01:00