Browse Source

check decode remote_addr

dev
BreakWa11 9 years ago
parent
commit
9538afebff
  1. 13
      shadowsocks/tcprelay.py

13
shadowsocks/tcprelay.py

@ -354,7 +354,7 @@ class TCPRelayHandler(object):
if type(host_list) == list: if type(host_list) == list:
host_post = common.to_str(host_list[((hash_code & 0xffffffff) + addr) % len(host_list)]) host_post = common.to_str(host_list[((hash_code & 0xffffffff) + addr) % len(host_list)])
else: else:
host_post = host_list host_post = common.to_str(host_list)
items = host_post.rsplit(':', 1) items = host_post.rsplit(':', 1)
if len(items) > 1: if len(items) > 1:
try: try:
@ -464,20 +464,19 @@ class TCPRelayHandler(object):
if data is None: if data is None:
data = self._handel_protocol_error(self._client_address, ogn_data) data = self._handel_protocol_error(self._client_address, ogn_data)
header_result = parse_header(data) header_result = parse_header(data)
if header_result is not None:
try:
common.to_str(remote_addr)
except Exception as e:
header_result = None
if header_result is None: if header_result is None:
data = self._handel_protocol_error(self._client_address, ogn_data) data = self._handel_protocol_error(self._client_address, ogn_data)
header_result = parse_header(data) header_result = parse_header(data)
connecttype, remote_addr, remote_port, header_length = header_result connecttype, remote_addr, remote_port, header_length = header_result
try:
common.connect_log('%s connecting %s:%d from %s:%d' % common.connect_log('%s connecting %s:%d from %s:%d' %
((connecttype == 0) and 'TCP' or 'UDP', ((connecttype == 0) and 'TCP' or 'UDP',
common.to_str(remote_addr), remote_port, common.to_str(remote_addr), remote_port,
self._client_address[0], self._client_address[1])) self._client_address[0], self._client_address[1]))
except Exception as e:
common.connect_log('%s connecting %s:%d from %s:%d' %
((connecttype == 0) and 'TCP' or 'UDP',
binascii.hexlify(remote_addr), remote_port,
self._client_address[0], self._client_address[1]))
self._remote_address = (common.to_str(remote_addr), remote_port) self._remote_address = (common.to_str(remote_addr), remote_port)
self._remote_udp = (connecttype != 0) self._remote_udp = (connecttype != 0)
# pause reading # pause reading

Loading…
Cancel
Save