Simplify request ip and port retrieval logic

This change also ensures that cases where transport stream is
already closed is handled gracefully.
This commit is contained in:
Arun Babu Neelicattu 2018-10-08 19:29:52 +02:00
parent 5cc12fd945
commit c3b31a6fb0

View File

@ -1,6 +1,5 @@
import sys
import json
import socket
from cgi import parse_header
from collections import namedtuple
from http.cookies import SimpleCookie
@ -192,18 +191,10 @@ class Request(dict):
return self._socket
def _get_address(self):
sock = self.transport.get_extra_info('socket')
if sock.family == socket.AF_INET:
self._socket = (self.transport.get_extra_info('peername') or
(None, None))
self._ip, self._port = self._socket
elif sock.family == socket.AF_INET6:
self._socket = (self.transport.get_extra_info('peername') or
(None, None, None, None))
self._ip, self._port, *_ = self._socket
else:
self._ip, self._port = (None, None)
self._socket = self.transport.get_extra_info('peername') or \
(None, None)
self._ip = self._socket[0]
self._port = self._socket[1]
@property
def remote_addr(self):