gtk/freshplayerplugin/0001-async_network-skip-resolution-of-already-resolved-ad.patch

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