mirror of
https://gitdl.cn/https://github.com/chakralinux/gtk.git
synced 2025-02-11 18:34:37 +08:00
42 lines
1.2 KiB
Diff
42 lines
1.2 KiB
Diff
From 317eda1a0f2b31be43624cf0fecfc35fdcdc99eb Mon Sep 17 00:00:00 2001
|
|
From: Rinat Ibragimov <ibragimovrinat@mail.ru>
|
|
Date: Sun, 18 Jan 2015 21:15:16 +0300
|
|
Subject: [PATCH] async_network: skip resolution of already resolved addresses
|
|
|
|
---
|
|
src/async_network.c | 11 +++++++++++
|
|
1 file changed, 11 insertions(+)
|
|
|
|
diff --git a/src/async_network.c b/src/async_network.c
|
|
index a9b12c6..6f879ad 100644
|
|
--- a/src/async_network.c
|
|
+++ b/src/async_network.c
|
|
@@ -27,6 +27,7 @@
|
|
#include <stdio.h>
|
|
#include <sys/types.h>
|
|
#include <sys/socket.h>
|
|
+#include <arpa/inet.h>
|
|
#include <netinet/in.h>
|
|
#include <netdb.h>
|
|
#include <event2/event.h>
|
|
@@ -256,6 +257,16 @@ void
|
|
handle_tcp_connect_stage1(struct async_network_task_s *task)
|
|
{
|
|
struct evdns_request *req;
|
|
+ struct sockaddr_in sai;
|
|
+
|
|
+ memset(&sai, 0, sizeof(sai));
|
|
+ if (inet_pton(AF_INET, task->host, &sai.sin_addr) == 1) {
|
|
+ // already a valid IP address
|
|
+ handle_tcp_connect_stage2(DNS_ERR_NONE, DNS_IPv4_A, 1, 300, &sai.sin_addr, task);
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ // queue DNS request
|
|
req = evdns_base_resolve_ipv4(evdns_b, task->host, DNS_QUERY_NO_SEARCH,
|
|
handle_tcp_connect_stage2, task);
|
|
// TODO: what about ipv6?
|
|
--
|
|
2.2.1
|
|
|