mirror of
https://gitdl.cn/https://github.com/chakralinux/gtk.git
synced 2025-02-11 23:34:41 +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
|
||
|
|