Hi. After too many attempts to follow up Daniel's (off-list) reaction to my earlier mail, here's a quick summary of how I think the questions raised can most simply be resolved.
On 11 Sep 2019, at 16:33, niall.oreilly+li...@ucd.ie wrote: > * Extend `struct dohdata` or use a different > structure for tracking DoH transactions whose > purpose is other than address resolution. Extend dohdata. > * If extending `struct dohdata`, dedicate an > additional slot per QTYPE, or introduce an > array of ‘generic’ slots. Dedicate additional slots, perhaps per (data-type, origin) rather than per QTYPE, as some QTYPEs are re-used for different purposes using distinct QNAME prefixes. More thought seems needed here. I'm minded to prototype a solution and have feedback on its appropriateness. > * Choose a structure for caching returned > data, as existing (hostname, port, address) > tuples cannot represent all the significant > data items (QNAME prefix, QTYPE). Rather than a shared cache as used at present for address (A/AAAA) data, a per-request or per-easy data structure seems good for a first attempt. > * Decide what DNS-derived data must be present > before advancing the connection state machine. Existing behaviour is to wait for all launched dohprobe transactions to complete, even though (modulo protocol-specific reachability) either an IPv4 or an IPv6 address should be sufficient. Looking ahead to ESNI, relevant key data might be published either as TXT with prefix or as TYPE65439 (pending standardization) without prefix, so two transactions have to be launched. Waiting for all to complete, and postponing optimization, as currently, seems the right next step at this stage. Best regards Niall O'Reilly ------------------------------------------------------------------- Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library Etiquette: https://curl.haxx.se/mail/etiquette.html