diff --git a/sanic/request.py b/sanic/request.py index d4f6dc6f..fcd4ed79 100644 --- a/sanic/request.py +++ b/sanic/request.py @@ -1,5 +1,6 @@ import sys import json +import socket from cgi import parse_header from collections import namedtuple from http.cookies import SimpleCookie @@ -185,9 +186,18 @@ class Request(dict): return self._socket def _get_address(self): - self._socket = (self.transport.get_extra_info('peername') or - (None, None)) - self._ip, self._port = self._socket + 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) @property def remote_addr(self):