Browse Source

Catch address resolution failure exceptions

master
Neil Booth 8 years ago
parent
commit
81e6577838
  1. 14
      server/peers.py

14
server/peers.py

@ -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,9 +337,15 @@ 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:
permit = any(source == info[-1][0] for info in infos) infos = await self.loop.getaddrinfo(host, 80,
reason = 'source-destination mismatch' type=socket.SOCK_STREAM)
except socket.gaierror:
permit = False
reason = 'address resolution failure'
else:
permit = any(source == info[-1][0] for info in infos)
reason = 'source-destination mismatch'
if permit: if permit:
self.log_info('accepted add_peer request from {} for {}' self.log_info('accepted add_peer request from {} for {}'

Loading…
Cancel
Save