Add function to determine whether a given request used TCP or not.

This commit is contained in:
Mark Andrews 2000-06-06 02:07:13 +00:00
parent ba6f0d85b4
commit 7ed73313b1
2 changed files with 24 additions and 1 deletions

View file

@ -228,6 +228,21 @@ dns_request_getresponse(dns_request_t *request, dns_message_t *message,
* Any result that dns_message_parse() can return.
*/
isc_boolean_t
dns_request_usedtcp(dns_request_t *request);
/*
* Return whether this query used TCP or not. Setting DNS_REQUESTOPT_TCP
* in the call to dns_request_create() will cause the function to return
* ISC_TRUE, othewise the result is based on the query message size.
*
* Requires:
* 'request' is a valid request.
*
* Returns:
* ISC_TRUE if TCP was used.
* ISC_FALSE if UDP was used.
*/
void
dns_request_destroy(dns_request_t **requestp);
/*

View file

@ -85,6 +85,7 @@ struct dns_request {
#define DNS_REQUEST_F_CONNECTING 0x0001
#define DNS_REQUEST_F_CANCELED 0x0002
#define DNS_REQUEST_F_TCP 0x0008 /* This request used TCP */
#define DNS_REQUEST_CANCELED(r) \
(((r)->flags & DNS_REQUEST_F_CANCELED) != 0)
#define DNS_REQUEST_CONNECTING(r) \
@ -587,7 +588,7 @@ dns_request_create(dns_requestmgr_t *requestmgr, dns_message_t *message,
req_connected, request);
if (result != ISC_R_SUCCESS)
goto unlink;
request->flags |= DNS_REQUEST_F_CONNECTING;
request->flags |= DNS_REQUEST_F_CONNECTING|DNS_REQUEST_F_TCP;
} else {
result = req_send(request, task, address);
if (result != ISC_R_SUCCESS)
@ -729,6 +730,13 @@ dns_request_getresponse(dns_request_t *request, dns_message_t *message,
return (dns_message_parse(message, request->answer, preserve_order));
}
isc_boolean_t
dns_request_usedtcp(dns_request_t *request) {
REQUIRE(VALID_REQUEST(request));
return (ISC_TF((request->flags & DNS_REQUEST_F_TCP) != 0));
}
void
dns_request_destroy(dns_request_t **requestp) {
dns_request_t *request;