Browse Source

Fixed aiohttp bug (#905)

main
nibrag 8 years ago
parent
commit
b86af5d6cf
2 changed files with 3 additions and 19 deletions
  1. +2
    -18
      aiosocks/connector.py
  2. +1
    -1
      tests/test_connector.py

+ 2
- 18
aiosocks/connector.py View File

@@ -1,7 +1,5 @@
import socket
import asyncio import asyncio
import aiohttp import aiohttp
import ipaddress
from aiohttp.errors import ProxyConnectionError from aiohttp.errors import ProxyConnectionError
from .errors import SocksError, SocksConnectionError from .errors import SocksError, SocksConnectionError
from .helpers import HttpProxyAddr, SocksAddr from .helpers import HttpProxyAddr, SocksAddr
@@ -65,22 +63,8 @@ class SocksConnector(aiohttp.TCPConnector):
else: else:
dst = req.host, req.port dst = req.host, req.port


# if self._resolver is AsyncResolver and self._proxy.host proxy_hosts = yield from self._resolve_host(self._proxy.host,
# is ip address, then aiodns raise DNSError. self._proxy.port)
# https://github.com/KeepSafe/aiohttp/pull/874. Fix:
try:
ipaddress.ip_address(self._proxy.host)
proxy_hosts = yield from self._loop.getaddrinfo(self._proxy.host,
self._proxy.port)
family, _, proto, _, address = proxy_hosts[0]

proxy_hosts = ({'hostname': self._proxy.host,
'host': address[0], 'port': address[1],
'family': family, 'proto': proto,
'flags': socket.AI_NUMERICHOST},)
except ValueError:
proxy_hosts = yield from self._resolve_host(self._proxy.host,
self._proxy.port)
exc = None exc = None


for hinfo in proxy_hosts: for hinfo in proxy_hosts:


+ 1
- 1
tests/test_connector.py View File

@@ -80,7 +80,7 @@ class TestSocksConnector(unittest.TestCase):


conn = self.loop.run_until_complete(connector.connect(req)) conn = self.loop.run_until_complete(connector.connect(req))


self.assertEqual(connector._resolve_host.call_count, 0) self.assertEqual(connector._resolve_host.call_count, 1)


conn.close() conn.close()




||||||
x
 
000:0
Loading…
Cancel
Save