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 asyncio
import random
import socket
import ssl
import time
from collections import defaultdict, Counter
from functools import partial
from socket import SOCK_STREAM
from lib.jsonrpc import JSONSession
from lib.peer import Peer
@ -337,9 +337,15 @@ class PeerManager(util.LoggedClass):
permit = self.permit_new_onion_peer()
reason = 'rate limiting'
else:
infos = await self.loop.getaddrinfo(host, 80, type=SOCK_STREAM)
permit = any(source == info[-1][0] for info in infos)
reason = 'source-destination mismatch'
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)
reason = 'source-destination mismatch'
if permit:
self.log_info('accepted add_peer request from {} for {}'

Loading…
Cancel
Save