<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div>Hi All, </div><div><br class=""></div><div class="">Following the earlier discussion of transport options I would like further comments on replacing the relevant part of section 8.3 of the API spec with the following:</div><div class=""><span style="text-shadow: rgba(0, 0, 0, 0.333333) 0px 1px 10px;" class=""><br class=""></span></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class=""><span style="widows: 1; background-color: rgb(255, 255, 255);" class=""><font color="#333333" class=""><span style="line-height: 20px; white-space: pre;" class="">getdns_return_t</span></font></span></div><div class=""><span style="widows: 1; background-color: rgb(255, 255, 255);" class=""><font color="#333333" class=""><span style="line-height: 20px; white-space: pre;" class="">getdns_context_set_dns_transport(</span></font></span></div><div class=""><span style="widows: 1; background-color: rgb(255, 255, 255);" class=""><font color="#333333" class=""><span style="line-height: 20px; white-space: pre;" class=""> getdns_context *context,</span></font></span></div><div class=""><span style="widows: 1; background-color: rgb(255, 255, 255);" class=""><font color="#333333" class=""><span style="line-height: 20px; white-space: pre;" class=""> getdns_list *transport_list</span></font></span></div><div class=""><span style="widows: 1; background-color: rgb(255, 255, 255);" class=""><font color="#333333" class=""><span style="line-height: 20px; white-space: pre;" class="">);</span></font></span></div><div class=""><p style="margin: 10px 0px 0px; padding: 0px; widows: 1; background-color: rgb(255, 255, 255);" class=""><font color="#333333" class=""><span style="line-height: 18.18181800842285px;" class="">Specifies what transport is used for DNS lookups. </span><span style="line-height: 18.1818180084229px;" class="">The transport_list is an ordered list, values are </span></font><span style="color: rgb(51, 51, 51); line-height: 18.1818180084229px;" class="">GETDNS_TRANSPORT_</span><span style="color: rgb(51, 51, 51); line-height: 18.1818180084229px;" class="">UDP, </span><span style="color: rgb(51, 51, 51); line-height: 18.1818180084229px;" class="">GETDNS_TRANSPORT_</span><span style="color: rgb(51, 51, 51); line-height: 18.1818180084229px;" class="">TCP, </span><span style="color: rgb(51, 51, 51); line-height: 18.1818180084229px;" class="">GETDNS_TRANSPORT_</span><span style="color: rgb(51, 51, 51); line-height: 18.1818180084229px;" class="">STARTTLS , </span><span style="color: rgb(51, 51, 51); line-height: 18.1818180084229px;" class="">GETDNS_TRANSPORT_</span><font color="#333333" class=""><span style="line-height: 18.1818180084229px;" class="">TLS. </span></font></p></div></blockquote><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class=""><br class=""></div></blockquote><div class=""><br class=""></div><div class="">[I presume the BOLD type face on the web page denotes the default, in which case it would be <span style="color: rgb(51, 51, 51); line-height: 18.18181800842285px; widows: 1; background-color: rgb(255, 255, 255);" class="">GETDNS_TRANSPORT_UDP, </span><span style="color: rgb(51, 51, 51); widows: 1; background-color: rgb(255, 255, 255); line-height: 1.4285715;" class="">GETDNS_TRANSPORT_TCP</span>]</div><div class=""><br class=""></div><div class="">And adding in section 8.7:</div><div class=""><br class=""></div><div class=""><span class="Apple-tab-span" style="white-space:pre"> </span>It might also contain tls_port to specify which port to use to contact these DNS servers when using TLS; the default is recommended as 1021 in lieu of an assignment from IANA.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">API Notes</div><div class="">--------</div><div style="widows: auto;" class="">1) For all TCP based connections:</div><div class=""><div class=""><br class=""></div><div class=""> — It is suggested from the default idle time should be 0. This is because several widely used server implementations (including BIND and Unbound) have a default configuration which cannot handle many long-lived TCP connections well. </div><div class=""><br class=""></div><div class=""> — The DNSOP WG is in the process of discussing protocol options to establish behaviour for long lived DNS-over-TCP connections. The question is how best to handle this in the API in the short term. It is likely that two useful configuration options for long-lived connections will be the 'idle_time' and the 'max_transactions_per_connection'. It is more convenient for users if they are context settings (as the query ‘timeout' and ‘limit_outstanding_queries’ are today), however we should consider if such values are more suited to being per-upstream or per-transport settings. </div></div><div class=""><span style="widows: 1;" class=""><font color="#333333" class=""><span style="line-height: 18.1818180084229px;" class=""><br class=""></span></font></span></div><div style="widows: 1;" class=""><font color="#333333" class=""><span style="line-height: 18.18181800842285px;" class="">2)</span></font> For STARTTLS/TLS connections I think we should also consider adding a per-upstream setting for “TLS Authentication data” and a context setting for “TLS versions/ciphers” in the future (current support is for TLS 1.2 only). </div><div class=""><br class=""></div><div class=""><div class="">Implementation Note</div><div class="">---------------------------</div><div class="">In the 0.2 release, if multiple upstreams and multiple transport values are both specified then the transport list take precedence over the upstream list when initially sending queries. [This is in order to maximise the chance of using an encrypted transport when fallback to an unencrypted transport is allowed]. However on reply truncation (TC=1) the message is re-tried over TCP to the same upstream if TCP is in the transport list.</div></div><div class=""><br class=""></div><div class="">Regards</div><div class=""><br class=""></div><div class="">Sara.</div></body></html>