ok eric@
On Sun, Feb 26, 2017 at 10:58:07PM +0100, Jeremie Courreges-Anglas wrote:
>
> Fine with me, here's a diff to introduce as_flags only, still on top of
> the RES_USE_DNSSEC diff.
>
>
> diff -x CVS -pruN asr.1/asr.c asr/asr.c
> --- asr.1/asr.c Sat Feb 25 17:57:40 2017
> +++ asr/asr.c Sun Feb 26 22:43:02 2017
> @@ -244,7 +244,7 @@ _asr_async_free(struct asr_query *as)
> case ASR_SEND:
> if (as->as_fd != -1)
> close(as->as_fd);
> - if (as->as.dns.obuf && !(as->as.dns.flags & ASYNC_EXTOBUF))
> + if (as->as.dns.obuf && !(as->as_flags & ASYNC_EXTOBUF))
> free(as->as.dns.obuf);
> if (as->as.dns.ibuf)
> free(as->as.dns.ibuf);
> diff -x CVS -pruN asr.1/asr_private.h asr/asr_private.h
> --- asr.1/asr_private.h Sat Feb 25 17:57:40 2017
> +++ asr/asr_private.h Sun Feb 26 22:44:06 2017
> @@ -165,6 +165,7 @@ struct asr_query {
> int (*as_run)(struct asr_query *, struct asr_result *);
> struct asr_ctx *as_ctx;
> int as_type;
> + int as_flags;
> int as_state;
>
> /* cond */
> @@ -183,7 +184,6 @@ struct asr_query {
>
> union {
> struct {
> - int flags;
> uint16_t reqid;
> int class;
> int type;
> @@ -206,7 +206,6 @@ struct asr_query {
> } dns;
>
> struct {
> - int flags;
> int class;
> int type;
> char *name;
> @@ -249,7 +248,6 @@ struct asr_query {
> char *fqdn;
> struct addrinfo *aifirst;
> struct addrinfo *ailast;
> - int flags;
> } ai;
>
> struct {
> diff -x CVS -pruN asr.1/getaddrinfo_async.c asr/getaddrinfo_async.c
> --- asr.1/getaddrinfo_async.c Sat Feb 25 17:57:40 2017
> +++ asr/getaddrinfo_async.c Sun Feb 26 22:43:02 2017
> @@ -356,11 +356,11 @@ getaddrinfo_async_run(struct asr_query *as, struct asr
> AS_FAMILY(as) : as->as.ai.hints.ai_family;
>
> if (family == AF_INET &&
> - as->as.ai.flags & ASYNC_NO_INET) {
> + as->as_flags & ASYNC_NO_INET) {
> async_set_state(as, ASR_STATE_NEXT_FAMILY);
> break;
> } else if (family == AF_INET6 &&
> - as->as.ai.flags & ASYNC_NO_INET6) {
> + as->as_flags & ASYNC_NO_INET6) {
> async_set_state(as, ASR_STATE_NEXT_FAMILY);
> break;
> }
> @@ -431,7 +431,7 @@ getaddrinfo_async_run(struct asr_query *as, struct asr
>
> case ASR_STATE_NOT_FOUND:
> /* No result found. Maybe we can try again. */
> - if (as->as.ai.flags & ASYNC_AGAIN)
> + if (as->as_flags & ASYNC_AGAIN)
> ar->ar_gai_errno = EAI_AGAIN;
> else
> ar->ar_gai_errno = EAI_NODATA;
> @@ -684,7 +684,7 @@ addrconfig_setup(struct asr_query *as)
> if (getifaddrs(&ifa0) == -1)
> return (-1);
>
> - as->as.ai.flags |= ASYNC_NO_INET | ASYNC_NO_INET6;
> + as->as_flags |= ASYNC_NO_INET | ASYNC_NO_INET6;
>
> for (ifa = ifa0; ifa != NULL; ifa = ifa->ifa_next) {
> if (ifa->ifa_addr == NULL)
> @@ -697,7 +697,7 @@ addrconfig_setup(struct asr_query *as)
> if (sinp->sin_addr.s_addr == htonl(INADDR_LOOPBACK))
> continue;
>
> - as->as.ai.flags &= ~ASYNC_NO_INET;
> + as->as_flags &= ~ASYNC_NO_INET;
> break;
> case PF_INET6:
> sin6p = (struct sockaddr_in6 *)ifa->ifa_addr;
> @@ -708,7 +708,7 @@ addrconfig_setup(struct asr_query *as)
> if (IN6_IS_ADDR_LINKLOCAL(&sin6p->sin6_addr))
> continue;
>
> - as->as.ai.flags &= ~ASYNC_NO_INET6;
> + as->as_flags &= ~ASYNC_NO_INET6;
> break;
> }
> }
> diff -x CVS -pruN asr.1/res_search_async.c asr/res_search_async.c
> --- asr.1/res_search_async.c Sat Feb 25 17:57:40 2017
> +++ asr/res_search_async.c Sun Feb 26 22:43:02 2017
> @@ -169,9 +169,9 @@ res_search_async_run(struct asr_query *as, struct asr_
>
> if (as->as_dom_flags & ASYNC_DOM_DOMAIN) {
> if (ar->ar_h_errno == NO_DATA)
> - as->as.search.flags |= ASYNC_NODATA;
> + as->as_flags |= ASYNC_NODATA;
> else if (ar->ar_h_errno == TRY_AGAIN)
> - as->as.search.flags |= ASYNC_AGAIN;
> + as->as_flags |= ASYNC_AGAIN;
> }
>
> async_set_state(as, ASR_STATE_NEXT_DOMAIN);
> @@ -181,9 +181,9 @@ res_search_async_run(struct asr_query *as, struct asr_
>
> if (as->as.search.saved_h_errno != HERRNO_UNSET)
> ar->ar_h_errno = as->as.search.saved_h_errno;
> - else if (as->as.search.flags & ASYNC_NODATA)
> + else if (as->as_flags & ASYNC_NODATA)
> ar->ar_h_errno = NO_DATA;
> - else if (as->as.search.flags & ASYNC_AGAIN)
> + else if (as->as_flags & ASYNC_AGAIN)
> ar->ar_h_errno = TRY_AGAIN;
> /*
> * Else, we got the ar_h_errno value set by res_query_async()
> diff -x CVS -pruN asr.1/res_send_async.c asr/res_send_async.c
> --- asr.1/res_send_async.c Sat Feb 25 17:57:40 2017
> +++ asr/res_send_async.c Sun Feb 26 22:48:50 2017
> @@ -67,7 +67,7 @@ res_send_async(const unsigned char *buf, int buflen, v
> }
> as->as_run = res_send_async_run;
>
> - as->as.dns.flags |= ASYNC_EXTOBUF;
> + as->as_flags |= ASYNC_EXTOBUF;
> as->as.dns.obuf = (unsigned char *)buf;
> as->as.dns.obuflen = buflen;
> as->as.dns.obufsize = buflen;
> @@ -346,7 +346,7 @@ setup_query(struct asr_query *as, const char *name, co
> char fqdn[MAXDNAME];
> char dname[MAXDNAME];
>
> - if (as->as.dns.flags & ASYNC_EXTOBUF) {
> + if (as->as_flags & ASYNC_EXTOBUF) {
> errno = EINVAL;
> DPRINT("attempting to write in user packet");
> return (-1);
>
>
> --
> jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE