Catch address resolution failure exceptions

This commit is contained in:
Neil Booth 2017-04-01 22:55:16 +09:00
parent 321315ace0
commit 81e6577838

View File

@ -10,11 +10,11 @@
import ast import ast
import asyncio import asyncio
import random import random
import socket
import ssl import ssl
import time import time
from collections import defaultdict, Counter from collections import defaultdict, Counter
from functools import partial from functools import partial
from socket import SOCK_STREAM
from lib.jsonrpc import JSONSession from lib.jsonrpc import JSONSession
from lib.peer import Peer from lib.peer import Peer
@ -337,7 +337,13 @@ class PeerManager(util.LoggedClass):
permit = self.permit_new_onion_peer() permit = self.permit_new_onion_peer()
reason = 'rate limiting' reason = 'rate limiting'
else: else:
infos = await self.loop.getaddrinfo(host, 80, type=SOCK_STREAM) try:
infos = await self.loop.getaddrinfo(host, 80,
type=socket.SOCK_STREAM)
except socket.gaierror:
permit = False
reason = 'address resolution failure'
else:
permit = any(source == info[-1][0] for info in infos) permit = any(source == info[-1][0] for info in infos)
reason = 'source-destination mismatch' reason = 'source-destination mismatch'