From 81e6577838067fc0cbe5813ed30df0f850da4a52 Mon Sep 17 00:00:00 2001 From: Neil Booth Date: Sat, 1 Apr 2017 22:55:16 +0900 Subject: [PATCH] Catch address resolution failure exceptions --- server/peers.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/server/peers.py b/server/peers.py index abe5e9e..91eee89 100644 --- a/server/peers.py +++ b/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 {}'