[getdns-api] call_debugging extension

Sara Dickinson sara at sinodun.com
Fri Nov 13 15:52:24 UTC 2015

> On 1 Nov 2015, at 04:18, John Dickinson <jad at sinodun.com <mailto:jad at sinodun.com>> wrote:
> I have implemented the call_debugging extension. It raised a couple of issues with the API:
> 1. Added a tls_auth_status field to tell you if the server was authenticated
> 2. Added a transport field to tell you what transport was actually used
> 3. removed start_time and end_time as these are defined as uint64_t’s but the dict can only handle 32 bit ints.
> 4. Added run_time field to contain  end_time - start_time as a uint32_t

Hi All, 

As a follow up to this I wanted to clarify what changes are being proposed to the official API at this time: 

1) Following the implementation in the hackathon there was consensus among the developers that this is very useful general information (not only for debugging purposes) and that a different name e.g. “return_call_reporting” would be more appropriate. 

2) The getdns dict cannot represent uint64_t values and therefore the start_time and end_time will be replaced by a single field called ‘run_time’ which will be the 'end_time - start_time as a uint32_t’

Suggested new text including these changes is below. We would like to agree these changes for the next release, so please voice any objections asap. 

The ‘transport’ and ’tis_auth_status’ fields mentioned above have been added to the getdns implementation as experimental fields at this point in time, but it would be useful to hear if there is support for adding them to the official API. 


3.6 Extensions Relating to the API

An application might want to see additional information for queries such as the length of time it takes for each query to return to the API. Use the return_call_reporting extension. The extension's value (an int) is set toGETDNS_EXTENSION_TRUE to add the name call_reporting (a list) to the top level of the response object. Each member of the list is a dict that represents one call made for the call to the API. Each member has the following names:
query_name (a bindata) is the name that was sent
query_type (an int) is the type that was queried for
query_to (a bindata) is the address to which the query was sent
run_time (a bindata) is the difference between the time the successful query started and ended in milliseconds since the epoch, represented as a uint32_t (this does not include time taken for connection set up or transport fallback)
entire_reply (a bindata) is the entire response received
dnssec_result (an int) is the DNSSEC status, or GETDNS_DNSSEC_NOT_PERFORMED if DNSSEC validation was not performed

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.getdnsapi.net/pipermail/spec/attachments/20151113/7e2cd98a/attachment.htm>

More information about the spec mailing list