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 aiohttp
import ipaddress
from aiohttp.errors import ProxyConnectionError
from .errors import SocksError, SocksConnectionError
from .helpers import HttpProxyAddr, SocksAddr
@@ -65,22 +63,8 @@ class SocksConnector(aiohttp.TCPConnector):
else:
dst = req.host, req.port

# if self._resolver is AsyncResolver and self._proxy.host
# is ip address, then aiodns raise DNSError.
# 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)
proxy_hosts = yield from self._resolve_host(self._proxy.host,
self._proxy.port)
exc = None

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))

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

conn.close()



Loading…
Cancel
Save