/* Locked by "lock". */
isc_mutex_t lock;
- unsigned int state;
ISC_LIST(dns_dispatch_t) list;
dns_qid_t *qid;
unsigned int nv6ports; /*%< # of available ports for IPv4 */
};
-#define MGR_SHUTTINGDOWN 0x00000001U
-#define MGR_IS_SHUTTINGDOWN(l) (((l)->state & MGR_SHUTTINGDOWN) != 0)
-
struct dns_dispentry {
unsigned int magic;
isc_refcount_t references;
/* Locked by "lock". */
isc_mutex_t lock; /*%< locks all below */
isc_socktype_t socktype;
- atomic_uint_fast32_t state;
+ atomic_uint_fast32_t tcpstate;
atomic_bool tcpreading;
isc_refcount_t references;
unsigned int shutdown_out : 1;
mgr->magic = 0;
isc_mutex_destroy(&mgr->lock);
- mgr->state = 0;
qid_destroy(mgr->mctx, &mgr->qid);
(localaddr == NULL ||
isc_sockaddr_eqaddr(localaddr, &sockname)))
{
- if (atomic_load(&disp->state) ==
+ if (atomic_load(&disp->tcpstate) ==
DNS_DISPATCHSTATE_CONNECTED) {
/* We found connected dispatch */
disp_connected = disp;
LOCK(&disp->lock);
REQUIRE(disp->handle == NULL);
REQUIRE(atomic_compare_exchange_strong(
- &disp->state,
+ &disp->tcpstate,
&(uint_fast32_t){ DNS_DISPATCHSTATE_CONNECTING },
DNS_DISPATCHSTATE_CONNECTED));
ISC_LIST_INIT(resps);
- if (MGR_IS_SHUTTINGDOWN(disp->mgr)) {
- eresult = ISC_R_SHUTTINGDOWN;
- }
-
if (eresult == ISC_R_SUCCESS) {
startrecv(handle, disp, NULL);
}
dispatch_log(disp, LVL(90), "UDP connected (%p): %s", resp,
isc_result_totext(eresult));
- if (MGR_IS_SHUTTINGDOWN(disp->mgr)) {
- eresult = ISC_R_SHUTTINGDOWN;
- }
-
if (eresult == ISC_R_SUCCESS && resp->canceled) {
eresult = ISC_R_CANCELED;
} else if (eresult == ISC_R_SUCCESS) {
isc_result_t
dns_dispatch_connect(dns_dispentry_t *resp) {
dns_dispatch_t *disp = NULL;
- uint_fast32_t state = DNS_DISPATCHSTATE_NONE;
+ uint_fast32_t tcpstate = DNS_DISPATCHSTATE_NONE;
REQUIRE(VALID_RESPONSE(resp));
* Check whether the dispatch is already connecting
* or connected.
*/
- atomic_compare_exchange_strong(&disp->state,
- (uint_fast32_t *)&state,
+ atomic_compare_exchange_strong(&disp->tcpstate,
+ (uint_fast32_t *)&tcpstate,
DNS_DISPATCHSTATE_CONNECTING);
- switch (state) {
+ switch (tcpstate) {
case DNS_DISPATCHSTATE_NONE:
/* First connection, continue with connecting */
LOCK(&disp->lock);