mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-11 09:09:59 -04:00
Add function to determine whether a given request used TCP or not.
This commit is contained in:
parent
ba6f0d85b4
commit
7ed73313b1
2 changed files with 24 additions and 1 deletions
|
|
@ -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);
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in a new issue