From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server-vie001.gnuweeb.org X-Spam-Level: X-Spam-Status: No, score=-1.2 required=5.0 tests=ALL_TRUSTED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,URIBL_DBL_BLOCKED_OPENDNS, URIBL_ZEN_BLOCKED_OPENDNS autolearn=ham autolearn_force=no version=3.4.6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gnuweeb.org; s=new2025; t=1754376645; bh=MYDLsnkmeCz8IZjXu4EY6TOHJEDetWfsFe9Czm9kATI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Transfer-Encoding:Message-ID:Date:From: Reply-To:Subject:To:Cc:In-Reply-To:References:Resent-Date: Resent-From:Resent-To:Resent-Cc:User-Agent:Content-Type: Content-Transfer-Encoding; b=us6/ms8fURm3ClhtVWnU/XxZPr0JDJsozZAKJ7xg0Hq1+nt8NtkBirD+WI72FtI81 K6R3FXNHpciKFAz9+F1tx8BkFoTEI8KgZKBXrcCklxPMs3be0RTuIWBKNyezY+aEF1 W+5/xCBtGw8d8RbGIG6xP3UipZ+2zDimRBlFCm2OyRkEx8T/ZWOQHqWXp8GlEaPY2J JPbtrCknMHW08whSt3cQyjtd/MwGtJGqKaOKrhGGXifVVnIjTs4V1FON1sO/1j1vZx uWpBxumjPMHuNrLeXgG6/1tH14P+8/y8iVhsbVhzx6+TNfxQpLrDun/tlC6hOtTgOu DpoFV6QeOuPMQ== Received: from zero (unknown [182.253.151.158]) by server-vie001.gnuweeb.org (Postfix) with ESMTPSA id 1A598312801F; Tue, 5 Aug 2025 06:50:43 +0000 (UTC) From: Ahmad Gani To: Ammar Faizi Cc: Ahmad Gani , Alviro Iskandar Setiawan , GNU/Weeb Mailing List Subject: [PATCH gwproxy v3 9/9] dnslookup: code style changes Date: Tue, 5 Aug 2025 13:49:29 +0700 Message-ID: <20250805064933.109080-10-reyuki@gnuweeb.org> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250805064933.109080-1-reyuki@gnuweeb.org> References: <20250805064933.109080-1-reyuki@gnuweeb.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: As requested by Sir Alviro, I change the place of variable declaration and other minor refactoring. Signed-off-by: Ahmad Gani --- src/gwproxy/dnslookup.c | 82 ++++++++++++++++++++++++++--------------- src/gwproxy/dnslookup.h | 1 + src/gwproxy/dnsparser.c | 15 +++++--- 3 files changed, 64 insertions(+), 34 deletions(-) diff --git a/src/gwproxy/dnslookup.c b/src/gwproxy/dnslookup.c index 740955ff6bef..91d38b4e64d2 100644 --- a/src/gwproxy/dnslookup.c +++ b/src/gwproxy/dnslookup.c @@ -15,10 +15,11 @@ int gw_ares_process_event(gw_ares_channel_t *channel) struct gw_ares_request *req; gwdns_answ_data raw_answ; socklen_t addrlen; - int ret, idx; + int ret; addrlen = sizeof(*channel->addr); - ret = __sys_recvfrom(channel->sockfd, recv_buff, UDP_MSG_LIMIT, MSG_NOSIGNAL, &channel->addr->sa, &addrlen); + ret = __sys_recvfrom(channel->sockfd, recv_buff, UDP_MSG_LIMIT, + MSG_NOSIGNAL, &channel->addr->sa, &addrlen); if (ret < 0) { /* GW_ARES_WAITING is unused for now. */ if (ret == -EAGAIN) @@ -33,6 +34,7 @@ int gw_ares_process_event(gw_ares_channel_t *channel) printf("%d bytes received\n", ret); req = NULL; + int idx; for (idx = 0; idx < channel->req_nr; idx++) { if (!memcmp(&channel->reqs[idx]->txid, recv_buff, 2)) { req = channel->reqs[idx]; @@ -63,9 +65,16 @@ int gw_ares_process_event(gw_ares_channel_t *channel) } printf("ancount=%u\n", raw_answ.hdr.ancount); - for (size_t i = 0; i < raw_answ.hdr.ancount; i++) { - gwdns_serialized_answ *answ = raw_answ.rr_answ[i]; - struct gw_addrinfo_node *new_node = malloc(sizeof(*new_node)); + + size_t i; + for (i = 0; i < raw_answ.hdr.ancount; i++) { + struct gw_addrinfo_node *new_node; + gwdns_serialized_answ *answ; + struct sockaddr_in6 *i6; + struct sockaddr_in *i4; + + answ = raw_answ.rr_answ[i]; + new_node = malloc(sizeof(*new_node)); if (!new_node) { ret = GW_ARES_ENOMEM; goto exit_free; @@ -73,27 +82,29 @@ int gw_ares_process_event(gw_ares_channel_t *channel) new_node->ai_next = NULL; if (answ->rr_type == TYPE_AAAA) { + i6 = &new_node->ai_addr.i6; new_node->ai_family = AF_INET6; - new_node->ai_addrlen = sizeof(new_node->ai_addr.i6); - new_node->ai_addr.i6.sin6_port = req->dst_port; - new_node->ai_addr.i6.sin6_family = AF_INET6; + new_node->ai_addrlen = sizeof(i6); + i6->sin6_port = req->dst_port; + i6->sin6_family = AF_INET6; /* * no overflow. * it's guaranteed to be true by serialize_answ function */ - assert(sizeof(new_node->ai_addr.i6.sin6_addr) == answ->rdlength); - memcpy(&new_node->ai_addr.i6.sin6_addr, answ->rdata, answ->rdlength); + assert(sizeof(i6->sin6_addr) == answ->rdlength); + memcpy(&i6->sin6_addr, answ->rdata, answ->rdlength); } else { + i4 = &new_node->ai_addr.i4; new_node->ai_family = AF_INET; - new_node->ai_addrlen = sizeof(new_node->ai_addr.i4); - new_node->ai_addr.i4.sin_port = req->dst_port; - new_node->ai_addr.i4.sin_family = AF_INET; + new_node->ai_addrlen = sizeof(i4); + i4->sin_port = req->dst_port; + i4->sin_family = AF_INET; /* * no overflow. * it's guaranteed to be true by serialize_answ function */ - assert(sizeof(new_node->ai_addr.i4.sin_addr) == answ->rdlength); - memcpy(&new_node->ai_addr.i4.sin_addr, answ->rdata, answ->rdlength); + assert(sizeof(i4->sin_addr) == answ->rdlength); + memcpy(&i4->sin_addr, answ->rdata, answ->rdlength); new_node->ai_ttl = answ->ttl; } @@ -110,7 +121,9 @@ exit_free: req->refcnt--; assert(req->refcnt >= 0); if (!req->refcnt) { - channel->getaddrinfo_cb(req->callback_args, GW_ARES_SUCCESS, req->results); + channel->getaddrinfo_cb( + req->callback_args, GW_ARES_SUCCESS, req->results + ); free(req); channel->req_nr--; req = channel->reqs[channel->req_nr]; @@ -120,7 +133,8 @@ exit_free: return ret; } -static int resolve_name(gw_ares_channel_t *channel, const char *name, uint16_t type, uint16_t txid) +static int resolve_name(gw_ares_channel_t *channel, const char *name, + uint16_t type, uint16_t txid) { uint8_t send_buff[UDP_MSG_LIMIT]; gwdns_question_part q; @@ -143,7 +157,10 @@ static int resolve_name(gw_ares_channel_t *channel, const char *name, uint16_t t return ret; } - ret = __sys_sendto(channel->sockfd, send_buff, buff_len, MSG_NOSIGNAL, &channel->addr->sa, channel->addrlen); + ret = __sys_sendto( + channel->sockfd, send_buff, buff_len, MSG_NOSIGNAL, + &channel->addr->sa, channel->addrlen + ); if (ret < 0) return ret; @@ -163,6 +180,7 @@ static int resize_reqs(gw_ares_channel_t *channel) memset(ptr[channel->req_nr], 0, channel->req_nr * sizeof(*channel->reqs)); channel->reqs = ptr; channel->req_cap = new_cap; + return 0; } @@ -296,8 +314,11 @@ int gw_ares_init(gw_ares_channel_t **channel, struct gw_ares_options *opts) * recursion desired (RD) bit and other things in the future. */ c->flags = opts->flags; - for (int i = 0; i < c->nr_server; i++) { - ret = convert_str_to_ssaddr(opts->servers[i], &c->servers[i], DEFAULT_DOMAIN_PORT); + int i; + for (i = 0; i < c->nr_server; i++) { + ret = convert_str_to_ssaddr( + opts->servers[i], &c->servers[i], DEFAULT_DOMAIN_PORT + ); if (ret) goto error_free_all; } @@ -312,7 +333,8 @@ int gw_ares_init(gw_ares_channel_t **channel, struct gw_ares_options *opts) c->getaddrinfo_cb = opts->getaddrinfo_cb; c->sockfd = ret; c->addr = &c->servers[0]; - c->addrlen = c->addr->sa.sa_family == AF_INET ? sizeof(c->addr->i4) : sizeof(c->addr->i6); + c->addrlen = c->addr->sa.sa_family == AF_INET ? + sizeof(c->addr->i4) : sizeof(c->addr->i6); return 0; error_free_all: @@ -355,9 +377,13 @@ static void getaddrinfo_cb(void *arg, int status, struct gw_ares_addrinfo *resul while (node) { int r = convert_ssaddr_to_str(buf, &node->ai_addr); assert(!r); - printf("%s: %s\n", node->ai_family == AF_INET6 ? "IPv6" : "IPv4", buf); + printf( + "%s: %s\n", + node->ai_family == AF_INET6 ? "IPv6" : "IPv4", buf + ); node = node->ai_next; } + gw_ares_freeaddrinfo(result); } @@ -390,18 +416,16 @@ int main(void) gw_ares_getaddrinfo(channel, "facebook.com", "80", &hints, NULL); gw_ares_getaddrinfo(channel, "github.com", "80", &hints, NULL); - while (1) { + while (true) { if (!channel->req_nr) break; - ret = __sys_epoll_wait(epfd, &ev, 1, -1); + + ret = __sys_epoll_wait(epfd, &ev, 1024, -1); if (ret < 0) return -EXIT_FAILURE; - if (ev.events & EPOLLIN) { - ret = gw_ares_process_event(channel); - if (ret) - printf("gw_ares_process_event return %d\n", ret); - } + if (ev.events & EPOLLIN) + gw_ares_process_event(channel); } gw_ares_deinit(channel); diff --git a/src/gwproxy/dnslookup.h b/src/gwproxy/dnslookup.h index 6c7db15b7d6f..a98ed6cff23c 100644 --- a/src/gwproxy/dnslookup.h +++ b/src/gwproxy/dnslookup.h @@ -139,6 +139,7 @@ void gw_ares_freeaddrinfo(struct gw_ares_addrinfo *ai); * @return zero on success and negative integer on error */ int gw_ares_init(gw_ares_channel_t **channel, struct gw_ares_options *opts); + /* * Free the resources allocated by gw_ares_init. * diff --git a/src/gwproxy/dnsparser.c b/src/gwproxy/dnsparser.c index 2d8af1da2893..88564504bbff 100644 --- a/src/gwproxy/dnsparser.c +++ b/src/gwproxy/dnsparser.c @@ -122,7 +122,8 @@ int serialize_answ(uint16_t txid, uint8_t *in, size_t in_len, gwdns_answ_data *o if (!out->rr_answ) return -ENOMEM; - for (size_t i = 0; i < hdr->ancount; i++) { + size_t i; + for (i = 0; i < hdr->ancount; i++) { uint16_t is_compressed, rdlength; gwdns_serialized_answ *item = malloc(sizeof(gwdns_serialized_answ)); if (!item) { @@ -211,7 +212,8 @@ int serialize_answ(uint16_t txid, uint8_t *in, size_t in_len, gwdns_answ_data *o return 0; exit_free: - for (size_t i = 0; i < out->hdr.ancount; i++) { + size_t i; + for (i = 0; i < out->hdr.ancount; i++) { free(out->rr_answ[i]->rdata); free(out->rr_answ[i]); } @@ -221,7 +223,8 @@ exit_free: void free_serialize_answ(gwdns_answ_data *answ) { - for (size_t i = 0; i < answ->hdr.ancount; i++) { + size_t i; + for (i = 0; i < answ->hdr.ancount; i++) { free(answ->rr_answ[i]->rdata); free(answ->rr_answ[i]); } @@ -300,7 +303,8 @@ void test_parse_ipv4(void) memcpy(&txid, recv_pkt, 2); assert(!serialize_answ(txid, recv_pkt, sizeof(recv_pkt), &d)); - for (size_t i = 0; i < d.hdr.ancount; i++) { + size_t i; + for (i = 0; i < d.hdr.ancount; i++) { struct gwp_sockaddr gs; gwdns_serialized_answ *answ; char buff[FULL_ADDRSTRLEN]; @@ -367,7 +371,8 @@ void test_parse_ipv6(void) ret = serialize_answ(txid, recv_pkt, sizeof(recv_pkt), &d); assert(!ret); - for (size_t i = 0; i < d.hdr.ancount; i++) { + size_t i; + for (i = 0; i < d.hdr.ancount; i++) { struct gwp_sockaddr gs; gwdns_serialized_answ *answ; char buff[FULL_ADDRSTRLEN]; -- Ahmad Gani