mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Update web-platform-tests to revision 4333a1d2f109795547fc5e22ebfc8481fa649de7
This commit is contained in:
parent
728ebcc932
commit
8c46b67f8e
456 changed files with 10561 additions and 5108 deletions
|
@ -118,7 +118,7 @@ class StreamBase(object):
|
|||
'Receiving %d byte failed. Peer (%r) closed connection' %
|
||||
(length, (self._request.connection.remote_addr,)))
|
||||
return read_bytes
|
||||
except socket.error, e:
|
||||
except socket.error as e:
|
||||
# Catch a socket.error. Because it's not a child class of the
|
||||
# IOError prior to Python 2.6, we cannot omit this except clause.
|
||||
# Use %s rather than %r for the exception to use human friendly
|
||||
|
@ -126,7 +126,7 @@ class StreamBase(object):
|
|||
raise ConnectionTerminatedException(
|
||||
'Receiving %d byte failed. socket.error (%s) occurred' %
|
||||
(length, e))
|
||||
except IOError, e:
|
||||
except IOError as e:
|
||||
# Also catch an IOError because mod_python throws it.
|
||||
raise ConnectionTerminatedException(
|
||||
'Receiving %d byte failed. IOError (%s) occurred' %
|
||||
|
@ -139,7 +139,7 @@ class StreamBase(object):
|
|||
|
||||
try:
|
||||
self._request.connection.write(bytes_to_write)
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
util.prepend_message_to_exception(
|
||||
'Failed to send message to %r: ' %
|
||||
(self._request.connection.remote_addr,),
|
||||
|
|
|
@ -538,7 +538,7 @@ class Stream(StreamBase):
|
|||
# at least one frame is sent.
|
||||
if len(message) <= bytes_written:
|
||||
break
|
||||
except ValueError, e:
|
||||
except ValueError as e:
|
||||
raise BadOperationException(e)
|
||||
|
||||
def _get_message_from_frame(self, frame):
|
||||
|
@ -677,7 +677,7 @@ class Stream(StreamBase):
|
|||
if handler:
|
||||
handler(self._request, message)
|
||||
return
|
||||
except AttributeError, e:
|
||||
except AttributeError as e:
|
||||
pass
|
||||
self._send_pong(message)
|
||||
|
||||
|
@ -704,7 +704,7 @@ class Stream(StreamBase):
|
|||
break
|
||||
else:
|
||||
inflight_pings.append(expected_body)
|
||||
except IndexError, e:
|
||||
except IndexError as e:
|
||||
# The received pong was unsolicited pong. Keep the
|
||||
# ping queue as is.
|
||||
self._ping_queue = inflight_pings
|
||||
|
@ -715,7 +715,7 @@ class Stream(StreamBase):
|
|||
handler = self._request.on_pong_handler
|
||||
if handler:
|
||||
handler(self._request, message)
|
||||
except AttributeError, e:
|
||||
except AttributeError as e:
|
||||
pass
|
||||
|
||||
def receive_message(self):
|
||||
|
@ -780,7 +780,7 @@ class Stream(StreamBase):
|
|||
# CHARACTER.
|
||||
try:
|
||||
return message.decode('utf-8')
|
||||
except UnicodeDecodeError, e:
|
||||
except UnicodeDecodeError as e:
|
||||
raise InvalidUTF8Exception(e)
|
||||
elif self._original_opcode == common.OPCODE_BINARY:
|
||||
return message
|
||||
|
|
|
@ -241,7 +241,7 @@ def _parse_extension(state):
|
|||
|
||||
try:
|
||||
_parse_extension_param(state, extension)
|
||||
except ExtensionParsingException, e:
|
||||
except ExtensionParsingException as e:
|
||||
raise ExtensionParsingException(
|
||||
'Failed to parse parameter for %r (%r)' %
|
||||
(extension_token, e))
|
||||
|
|
|
@ -143,7 +143,7 @@ def _source_handler_file(handler_definition):
|
|||
|
||||
global_dic = {}
|
||||
try:
|
||||
exec handler_definition in global_dic
|
||||
exec(handler_definition, global_dic)
|
||||
except Exception:
|
||||
raise DispatchException('Error in sourcing handler:' +
|
||||
util.get_stack_trace())
|
||||
|
@ -254,12 +254,12 @@ class Dispatcher(object):
|
|||
do_extra_handshake_ = handler_suite.do_extra_handshake
|
||||
try:
|
||||
do_extra_handshake_(request)
|
||||
except handshake.AbortedByUserException, e:
|
||||
except handshake.AbortedByUserException as e:
|
||||
# Re-raise to tell the caller of this function to finish this
|
||||
# connection without sending any error.
|
||||
self._logger.debug('%s', util.get_stack_trace())
|
||||
raise
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
util.prepend_message_to_exception(
|
||||
'%s raised exception for %s: ' % (
|
||||
_DO_EXTRA_HANDSHAKE_HANDLER_NAME,
|
||||
|
@ -296,28 +296,28 @@ class Dispatcher(object):
|
|||
if not request.server_terminated:
|
||||
request.ws_stream.close_connection()
|
||||
# Catch non-critical exceptions the handler didn't handle.
|
||||
except handshake.AbortedByUserException, e:
|
||||
except handshake.AbortedByUserException as e:
|
||||
self._logger.debug('%s', util.get_stack_trace())
|
||||
raise
|
||||
except msgutil.BadOperationException, e:
|
||||
except msgutil.BadOperationException as e:
|
||||
self._logger.debug('%s', e)
|
||||
request.ws_stream.close_connection(
|
||||
common.STATUS_INTERNAL_ENDPOINT_ERROR)
|
||||
except msgutil.InvalidFrameException, e:
|
||||
except msgutil.InvalidFrameException as e:
|
||||
# InvalidFrameException must be caught before
|
||||
# ConnectionTerminatedException that catches InvalidFrameException.
|
||||
self._logger.debug('%s', e)
|
||||
request.ws_stream.close_connection(common.STATUS_PROTOCOL_ERROR)
|
||||
except msgutil.UnsupportedFrameException, e:
|
||||
except msgutil.UnsupportedFrameException as e:
|
||||
self._logger.debug('%s', e)
|
||||
request.ws_stream.close_connection(common.STATUS_UNSUPPORTED_DATA)
|
||||
except stream.InvalidUTF8Exception, e:
|
||||
except stream.InvalidUTF8Exception as e:
|
||||
self._logger.debug('%s', e)
|
||||
request.ws_stream.close_connection(
|
||||
common.STATUS_INVALID_FRAME_PAYLOAD_DATA)
|
||||
except msgutil.ConnectionTerminatedException, e:
|
||||
except msgutil.ConnectionTerminatedException as e:
|
||||
self._logger.debug('%s', e)
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
# Any other exceptions are forwarded to the caller of this
|
||||
# function.
|
||||
util.prepend_message_to_exception(
|
||||
|
@ -379,7 +379,7 @@ class Dispatcher(object):
|
|||
continue
|
||||
try:
|
||||
handler_suite = _source_handler_file(open(path).read())
|
||||
except DispatchException, e:
|
||||
except DispatchException as e:
|
||||
self._source_warnings.append('%s: %s' % (path, e))
|
||||
continue
|
||||
resource = convert(path)
|
||||
|
|
|
@ -185,7 +185,7 @@ class DeflateFrameExtensionProcessor(ExtensionProcessorInterface):
|
|||
self._WINDOW_BITS_PARAM)
|
||||
try:
|
||||
window_bits = _parse_window_bits(window_bits)
|
||||
except ValueError, e:
|
||||
except ValueError as e:
|
||||
return None
|
||||
|
||||
no_context_takeover = self._request.has_parameter(
|
||||
|
@ -368,7 +368,7 @@ class PerMessageDeflateExtensionProcessor(ExtensionProcessorInterface):
|
|||
try:
|
||||
server_max_window_bits = _parse_window_bits(
|
||||
server_max_window_bits)
|
||||
except ValueError, e:
|
||||
except ValueError as e:
|
||||
self._logger.debug('Bad %s parameter: %r',
|
||||
self._SERVER_MAX_WINDOW_BITS_PARAM,
|
||||
e)
|
||||
|
@ -703,7 +703,7 @@ class MuxExtensionProcessor(ExtensionProcessorInterface):
|
|||
if quota is not None:
|
||||
try:
|
||||
quota = int(quota)
|
||||
except ValueError, e:
|
||||
except ValueError as e:
|
||||
return None
|
||||
if quota < 0 or quota >= 2 ** 32:
|
||||
return None
|
||||
|
|
|
@ -90,15 +90,15 @@ def do_handshake(request, dispatcher, allowDraft75=False, strict=False):
|
|||
handshaker.do_handshake()
|
||||
_LOGGER.info('Established (%s protocol)', name)
|
||||
return
|
||||
except HandshakeException, e:
|
||||
except HandshakeException as e:
|
||||
_LOGGER.debug(
|
||||
'Failed to complete opening handshake as %s protocol: %r',
|
||||
name, e)
|
||||
if e.status:
|
||||
raise e
|
||||
except AbortedByUserException, e:
|
||||
except AbortedByUserException as e:
|
||||
raise
|
||||
except VersionException, e:
|
||||
except VersionException as e:
|
||||
raise
|
||||
|
||||
# TODO(toyoshim): Add a test to cover the case all handshakers fail.
|
||||
|
|
|
@ -111,7 +111,7 @@ def parse_host_header(request):
|
|||
return fields[0], get_default_port(request.is_https())
|
||||
try:
|
||||
return fields[0], int(fields[1])
|
||||
except ValueError, e:
|
||||
except ValueError as e:
|
||||
raise HandshakeException('Invalid port number format: %r' % e)
|
||||
|
||||
|
||||
|
|
|
@ -112,7 +112,7 @@ class Handshaker(object):
|
|||
|
||||
try:
|
||||
connection_tokens = parse_token_list(connection)
|
||||
except HandshakeException, e:
|
||||
except HandshakeException as e:
|
||||
raise HandshakeException(
|
||||
'Failed to parse %s: %s' % (common.CONNECTION_HEADER, e))
|
||||
|
||||
|
@ -273,7 +273,7 @@ class Handshaker(object):
|
|||
'request any subprotocol')
|
||||
|
||||
self._send_handshake(accept)
|
||||
except HandshakeException, e:
|
||||
except HandshakeException as e:
|
||||
if not e.status:
|
||||
# Fallback to 400 bad request by default.
|
||||
e.status = common.HTTP_STATUS_BAD_REQUEST
|
||||
|
@ -327,7 +327,7 @@ class Handshaker(object):
|
|||
try:
|
||||
self._request.ws_requested_extensions = common.parse_extensions(
|
||||
extensions_header)
|
||||
except common.ExtensionParsingException, e:
|
||||
except common.ExtensionParsingException as e:
|
||||
raise HandshakeException(
|
||||
'Failed to parse Sec-WebSocket-Extensions header: %r' % e)
|
||||
|
||||
|
@ -353,7 +353,7 @@ class Handshaker(object):
|
|||
decoded_key = base64.b64decode(key)
|
||||
if len(decoded_key) == 16:
|
||||
key_is_valid = True
|
||||
except TypeError, e:
|
||||
except TypeError as e:
|
||||
pass
|
||||
|
||||
if not key_is_valid:
|
||||
|
|
|
@ -33,7 +33,7 @@ in HTTP RFC http://www.ietf.org/rfc/rfc2616.txt.
|
|||
"""
|
||||
|
||||
|
||||
import urlparse
|
||||
from six.moves import urllib
|
||||
|
||||
|
||||
_SEPARATORS = '()<>@,;:\\"/[]?={} \t'
|
||||
|
@ -218,7 +218,7 @@ def quote_if_necessary(s):
|
|||
def parse_uri(uri):
|
||||
"""Parse absolute URI then return host, port and resource."""
|
||||
|
||||
parsed = urlparse.urlsplit(uri)
|
||||
parsed = urllib.parse.urlsplit(uri)
|
||||
if parsed.scheme != 'wss' and parsed.scheme != 'ws':
|
||||
# |uri| must be a relative URI.
|
||||
# TODO(toyoshim): Should validate |uri|.
|
||||
|
@ -230,7 +230,7 @@ def parse_uri(uri):
|
|||
port = None
|
||||
try:
|
||||
port = parsed.port
|
||||
except ValueError, e:
|
||||
except ValueError as e:
|
||||
# port property cause ValueError on invalid null port description like
|
||||
# 'ws://host:/path'.
|
||||
return None, None, None
|
||||
|
@ -253,11 +253,11 @@ def parse_uri(uri):
|
|||
|
||||
|
||||
try:
|
||||
urlparse.uses_netloc.index('ws')
|
||||
except ValueError, e:
|
||||
urllib.parse.uses_netloc.index('ws')
|
||||
except ValueError as e:
|
||||
# urlparse in Python2.5.1 doesn't have 'ws' and 'wss' entries.
|
||||
urlparse.uses_netloc.append('ws')
|
||||
urlparse.uses_netloc.append('wss')
|
||||
urllib.parse.uses_netloc.append('ws')
|
||||
urllib.parse.uses_netloc.append('wss')
|
||||
|
||||
|
||||
# vi:sts=4 sw=4 et
|
||||
|
|
|
@ -36,9 +36,6 @@ A memorizing file wraps a file and memorizes lines read by readline.
|
|||
"""
|
||||
|
||||
|
||||
import sys
|
||||
|
||||
|
||||
class MemorizingFile(object):
|
||||
|
||||
"""MemorizingFile wraps a file and memorizes lines read by readline.
|
||||
|
@ -48,7 +45,7 @@ class MemorizingFile(object):
|
|||
the control reaches WebSocketRequestHandler.
|
||||
"""
|
||||
|
||||
def __init__(self, file_, max_memorized_lines=sys.maxint):
|
||||
def __init__(self, file_, max_memorized_lines=0x7FFFFFFF):
|
||||
"""Construct an instance.
|
||||
|
||||
Args:
|
||||
|
|
|
@ -38,7 +38,7 @@ bytes writing/reading.
|
|||
"""
|
||||
|
||||
|
||||
import Queue
|
||||
from six.moves import queue
|
||||
import threading
|
||||
|
||||
|
||||
|
@ -124,7 +124,7 @@ class MessageReceiver(threading.Thread):
|
|||
|
||||
threading.Thread.__init__(self)
|
||||
self._request = request
|
||||
self._queue = Queue.Queue()
|
||||
self._queue = queue.Queue()
|
||||
self._onmessage = onmessage
|
||||
self._stop_requested = False
|
||||
self.setDaemon(True)
|
||||
|
@ -157,7 +157,7 @@ class MessageReceiver(threading.Thread):
|
|||
"""
|
||||
try:
|
||||
message = self._queue.get_nowait()
|
||||
except Queue.Empty:
|
||||
except queue.Empty:
|
||||
message = None
|
||||
return message
|
||||
|
||||
|
@ -190,7 +190,7 @@ class MessageSender(threading.Thread):
|
|||
"""
|
||||
threading.Thread.__init__(self)
|
||||
self._request = request
|
||||
self._queue = Queue.Queue()
|
||||
self._queue = queue.Queue()
|
||||
self.setDaemon(True)
|
||||
self.start()
|
||||
|
||||
|
|
|
@ -364,7 +364,7 @@ class _MuxFramePayloadParser(object):
|
|||
"""
|
||||
try:
|
||||
size = self._read_number()
|
||||
except ValueError, e:
|
||||
except ValueError as e:
|
||||
raise PhysicalConnectionError(_DROP_CODE_INVALID_MUX_CONTROL_BLOCK,
|
||||
str(e))
|
||||
pos = self._read_position
|
||||
|
@ -387,7 +387,7 @@ class _MuxFramePayloadParser(object):
|
|||
encoding = first_byte & 0x3
|
||||
try:
|
||||
control_block.channel_id = self.read_channel_id()
|
||||
except ValueError, e:
|
||||
except ValueError as e:
|
||||
raise PhysicalConnectionError(_DROP_CODE_INVALID_MUX_CONTROL_BLOCK)
|
||||
control_block.encoding = encoding
|
||||
encoded_handshake = self._read_size_and_contents()
|
||||
|
@ -405,7 +405,7 @@ class _MuxFramePayloadParser(object):
|
|||
control_block.encoding = first_byte & 0x3
|
||||
try:
|
||||
control_block.channel_id = self.read_channel_id()
|
||||
except ValueError, e:
|
||||
except ValueError as e:
|
||||
raise PhysicalConnectionError(_DROP_CODE_INVALID_MUX_CONTROL_BLOCK)
|
||||
control_block.encoded_handshake = self._read_size_and_contents()
|
||||
return control_block
|
||||
|
@ -420,7 +420,7 @@ class _MuxFramePayloadParser(object):
|
|||
try:
|
||||
control_block.channel_id = self.read_channel_id()
|
||||
control_block.send_quota = self._read_number()
|
||||
except ValueError, e:
|
||||
except ValueError as e:
|
||||
raise PhysicalConnectionError(_DROP_CODE_INVALID_MUX_CONTROL_BLOCK,
|
||||
str(e))
|
||||
|
||||
|
@ -435,7 +435,7 @@ class _MuxFramePayloadParser(object):
|
|||
|
||||
try:
|
||||
control_block.channel_id = self.read_channel_id()
|
||||
except ValueError, e:
|
||||
except ValueError as e:
|
||||
raise PhysicalConnectionError(_DROP_CODE_INVALID_MUX_CONTROL_BLOCK)
|
||||
reason = self._read_size_and_contents()
|
||||
if len(reason) == 0:
|
||||
|
@ -460,7 +460,7 @@ class _MuxFramePayloadParser(object):
|
|||
try:
|
||||
control_block.slots = self._read_number()
|
||||
control_block.send_quota = self._read_number()
|
||||
except ValueError, e:
|
||||
except ValueError as e:
|
||||
raise PhysicalConnectionError(_DROP_CODE_INVALID_MUX_CONTROL_BLOCK,
|
||||
str(e))
|
||||
return control_block
|
||||
|
@ -931,7 +931,7 @@ class _LogicalStream(Stream):
|
|||
|
||||
opcode = common.OPCODE_CONTINUATION
|
||||
|
||||
except ValueError, e:
|
||||
except ValueError as e:
|
||||
raise BadOperationException(e)
|
||||
finally:
|
||||
self._write_inner_frame_semaphore.release()
|
||||
|
@ -1032,7 +1032,7 @@ class _LogicalStream(Stream):
|
|||
# connection has closed gracefully.
|
||||
try:
|
||||
return Stream.receive_message(self)
|
||||
except LogicalConnectionClosedException, e:
|
||||
except LogicalConnectionClosedException as e:
|
||||
self._logger.debug('%s', e)
|
||||
return None
|
||||
|
||||
|
@ -1143,7 +1143,7 @@ class _PhysicalConnectionWriter(threading.Thread):
|
|||
try:
|
||||
self._mux_handler.physical_stream.send_message(
|
||||
message=message, end=True, binary=True)
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
util.prepend_message_to_exception(
|
||||
'Failed to send message to %r: ' %
|
||||
(self._mux_handler.physical_connection.remote_addr,), e)
|
||||
|
@ -1184,7 +1184,7 @@ class _PhysicalConnectionWriter(threading.Thread):
|
|||
# by the reader thread.
|
||||
self._mux_handler.physical_stream.close_connection(
|
||||
self._close_code, wait_response=False)
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
util.prepend_message_to_exception(
|
||||
'Failed to close the physical connection: %r' % e)
|
||||
raise
|
||||
|
@ -1231,20 +1231,20 @@ class _PhysicalConnectionReader(threading.Thread):
|
|||
'Received a text message on physical connection')
|
||||
break
|
||||
|
||||
except ConnectionTerminatedException, e:
|
||||
except ConnectionTerminatedException as e:
|
||||
self._logger.debug('%s', e)
|
||||
break
|
||||
|
||||
try:
|
||||
self._mux_handler.dispatch_message(message)
|
||||
except PhysicalConnectionError, e:
|
||||
except PhysicalConnectionError as e:
|
||||
self._mux_handler.fail_physical_connection(
|
||||
e.drop_code, e.message)
|
||||
break
|
||||
except LogicalChannelError, e:
|
||||
except LogicalChannelError as e:
|
||||
self._mux_handler.fail_logical_channel(
|
||||
e.channel_id, e.drop_code, e.message)
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
self._logger.debug(traceback.format_exc())
|
||||
break
|
||||
|
||||
|
@ -1276,7 +1276,7 @@ class _Worker(threading.Thread):
|
|||
try:
|
||||
# Non-critical exceptions will be handled by dispatcher.
|
||||
self._mux_handler.dispatcher.transfer_data(self._request)
|
||||
except LogicalChannelError, e:
|
||||
except LogicalChannelError as e:
|
||||
self._mux_handler.fail_logical_channel(
|
||||
e.channel_id, e.drop_code, e.message)
|
||||
finally:
|
||||
|
@ -1617,19 +1617,19 @@ class _MuxHandler(object):
|
|||
send_quota, receive_quota)
|
||||
try:
|
||||
handshaker.do_handshake()
|
||||
except handshake.VersionException, e:
|
||||
except handshake.VersionException as e:
|
||||
self._logger.info('%s', e)
|
||||
self._send_error_add_channel_response(
|
||||
request.channel_id, status=common.HTTP_STATUS_BAD_REQUEST)
|
||||
return False
|
||||
except handshake.HandshakeException, e:
|
||||
except handshake.HandshakeException as e:
|
||||
# TODO(bashi): Should we _Fail the Logical Channel_ with 3001
|
||||
# instead?
|
||||
self._logger.info('%s', e)
|
||||
self._send_error_add_channel_response(request.channel_id,
|
||||
status=e.status)
|
||||
return False
|
||||
except handshake.AbortedByUserException, e:
|
||||
except handshake.AbortedByUserException as e:
|
||||
self._logger.info('%s', e)
|
||||
self._send_error_add_channel_response(request.channel_id)
|
||||
return False
|
||||
|
@ -1656,7 +1656,7 @@ class _MuxHandler(object):
|
|||
def _process_add_channel_request(self, block):
|
||||
try:
|
||||
logical_request = self._create_logical_request(block)
|
||||
except ValueError, e:
|
||||
except ValueError as e:
|
||||
self._logger.debug('Failed to create logical request: %r' % e)
|
||||
self._send_error_add_channel_response(
|
||||
block.channel_id, status=common.HTTP_STATUS_BAD_REQUEST)
|
||||
|
@ -1763,7 +1763,7 @@ class _MuxHandler(object):
|
|||
parser = _MuxFramePayloadParser(message)
|
||||
try:
|
||||
channel_id = parser.read_channel_id()
|
||||
except ValueError, e:
|
||||
except ValueError as e:
|
||||
raise PhysicalConnectionError(_DROP_CODE_CHANNEL_ID_TRUNCATED)
|
||||
if channel_id == _CONTROL_CHANNEL_ID:
|
||||
self._process_control_blocks(parser)
|
||||
|
|
|
@ -143,7 +143,7 @@ configuration file.
|
|||
THREADING
|
||||
=========
|
||||
|
||||
This server is derived from SocketServer.ThreadingMixIn. Hence a thread is
|
||||
This server is derived from socketserver.ThreadingMixIn. Hence a thread is
|
||||
used for each request.
|
||||
|
||||
|
||||
|
@ -155,13 +155,13 @@ It may execute arbitrary Python code or external programs. It should not be
|
|||
used outside a firewall.
|
||||
"""
|
||||
|
||||
import BaseHTTPServer
|
||||
import CGIHTTPServer
|
||||
import SimpleHTTPServer
|
||||
import SocketServer
|
||||
import ConfigParser
|
||||
from six.moves import BaseHTTPServer
|
||||
from six.moves import CGIHTTPServer
|
||||
from six.moves import SimpleHTTPServer
|
||||
from six.moves import socketserver
|
||||
from six.moves import configparser
|
||||
import base64
|
||||
import httplib
|
||||
from six.moves import http_client
|
||||
import logging
|
||||
import logging.handlers
|
||||
import optparse
|
||||
|
@ -172,7 +172,7 @@ import socket
|
|||
import sys
|
||||
import threading
|
||||
import time
|
||||
import urlparse
|
||||
from six.moves import urllib
|
||||
|
||||
from mod_pywebsocket import common
|
||||
from mod_pywebsocket import dispatch
|
||||
|
@ -348,8 +348,8 @@ class _StandaloneSSLConnection(object):
|
|||
|
||||
try:
|
||||
return self._connection.recv(bufsize)
|
||||
except OpenSSL.SSL.SysCallError, (err, message):
|
||||
if err == -1:
|
||||
except OpenSSL.SSL.SysCallError as e:
|
||||
if e.args[0] == -1:
|
||||
# Suppress "unexpected EOF" exception. See the OpenSSL document
|
||||
# for SSL_get_error.
|
||||
return ''
|
||||
|
@ -376,22 +376,22 @@ def _alias_handlers(dispatcher, websock_handlers_map_file):
|
|||
try:
|
||||
dispatcher.add_resource_path_alias(
|
||||
m.group(1), m.group(2))
|
||||
except dispatch.DispatchException, e:
|
||||
except dispatch.DispatchException as e:
|
||||
logging.error(str(e))
|
||||
finally:
|
||||
fp.close()
|
||||
|
||||
|
||||
class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):
|
||||
class WebSocketServer(socketserver.ThreadingMixIn, BaseHTTPServer.HTTPServer):
|
||||
"""HTTPServer specialized for WebSocket."""
|
||||
|
||||
# Overrides SocketServer.ThreadingMixIn.daemon_threads
|
||||
# Overrides socketserver.ThreadingMixIn.daemon_threads
|
||||
daemon_threads = True
|
||||
# Overrides BaseHTTPServer.HTTPServer.allow_reuse_address
|
||||
allow_reuse_address = True
|
||||
|
||||
def __init__(self, options):
|
||||
"""Override SocketServer.TCPServer.__init__ to set SSL enabled
|
||||
"""Override socketserver.TCPServer.__init__ to set SSL enabled
|
||||
socket object to self.socket before server_bind and server_activate,
|
||||
if necessary.
|
||||
"""
|
||||
|
@ -416,7 +416,7 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):
|
|||
self.__ws_is_shut_down = threading.Event()
|
||||
self.__ws_serving = False
|
||||
|
||||
SocketServer.BaseServer.__init__(
|
||||
socketserver.BaseServer.__init__(
|
||||
self, (options.server_host, options.port), WebSocketRequestHandler)
|
||||
|
||||
# Expose the options object to allow handler objects access it. We name
|
||||
|
@ -452,7 +452,7 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):
|
|||
family, socktype, proto, canonname, sockaddr = addrinfo
|
||||
try:
|
||||
socket_ = socket.socket(family, socktype)
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
self._logger.info('Skip by failure: %r', e)
|
||||
continue
|
||||
server_options = self.websocket_server_options
|
||||
|
@ -477,7 +477,7 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):
|
|||
self._sockets.append((socket_, addrinfo))
|
||||
|
||||
def server_bind(self):
|
||||
"""Override SocketServer.TCPServer.server_bind to enable multiple
|
||||
"""Override socketserver.TCPServer.server_bind to enable multiple
|
||||
sockets bind.
|
||||
"""
|
||||
|
||||
|
@ -490,7 +490,7 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):
|
|||
socket_.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||
try:
|
||||
socket_.bind(self.server_address)
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
self._logger.info('Skip by failure: %r', e)
|
||||
socket_.close()
|
||||
failed_sockets.append(socketinfo)
|
||||
|
@ -508,7 +508,7 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):
|
|||
self._sockets.remove(socketinfo)
|
||||
|
||||
def server_activate(self):
|
||||
"""Override SocketServer.TCPServer.server_activate to enable multiple
|
||||
"""Override socketserver.TCPServer.server_activate to enable multiple
|
||||
sockets listen.
|
||||
"""
|
||||
|
||||
|
@ -519,7 +519,7 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):
|
|||
self._logger.info('Listen on: %r', addrinfo)
|
||||
try:
|
||||
socket_.listen(self.request_queue_size)
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
self._logger.info('Skip by failure: %r', e)
|
||||
socket_.close()
|
||||
failed_sockets.append(socketinfo)
|
||||
|
@ -532,7 +532,7 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):
|
|||
'No sockets activated. Use info log level to see the reason.')
|
||||
|
||||
def server_close(self):
|
||||
"""Override SocketServer.TCPServer.server_close to enable multiple
|
||||
"""Override socketserver.TCPServer.server_close to enable multiple
|
||||
sockets close.
|
||||
"""
|
||||
|
||||
|
@ -542,13 +542,13 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):
|
|||
socket_.close()
|
||||
|
||||
def fileno(self):
|
||||
"""Override SocketServer.TCPServer.fileno."""
|
||||
"""Override socketserver.TCPServer.fileno."""
|
||||
|
||||
self._logger.critical('Not supported: fileno')
|
||||
return self._sockets[0][0].fileno()
|
||||
|
||||
def handle_error(self, request, client_address):
|
||||
"""Override SocketServer.handle_error."""
|
||||
"""Override socketserver.handle_error."""
|
||||
|
||||
self._logger.error(
|
||||
'Exception in processing request from: %r\n%s',
|
||||
|
@ -570,7 +570,7 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):
|
|||
if server_options.tls_module == _TLS_BY_STANDARD_MODULE:
|
||||
try:
|
||||
accepted_socket.do_handshake()
|
||||
except ssl.SSLError, e:
|
||||
except ssl.SSLError as e:
|
||||
self._logger.debug('%r', e)
|
||||
raise
|
||||
|
||||
|
@ -609,7 +609,7 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):
|
|||
# TODO(tyoshino): Convert all kinds of errors.
|
||||
try:
|
||||
accepted_socket.do_handshake()
|
||||
except OpenSSL.SSL.Error, e:
|
||||
except OpenSSL.SSL.Error as e:
|
||||
# Set errno part to 1 (SSL_ERROR_SSL) like the ssl module
|
||||
# does.
|
||||
self._logger.debug('%r', e)
|
||||
|
@ -625,7 +625,7 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):
|
|||
return accepted_socket, client_address
|
||||
|
||||
def serve_forever(self, poll_interval=0.5):
|
||||
"""Override SocketServer.BaseServer.serve_forever."""
|
||||
"""Override socketserver.BaseServer.serve_forever."""
|
||||
|
||||
self.__ws_serving = True
|
||||
self.__ws_is_shut_down.clear()
|
||||
|
@ -647,7 +647,7 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):
|
|||
self.__ws_is_shut_down.set()
|
||||
|
||||
def shutdown(self):
|
||||
"""Override SocketServer.BaseServer.shutdown."""
|
||||
"""Override socketserver.BaseServer.shutdown."""
|
||||
|
||||
self.__ws_serving = False
|
||||
self.__ws_is_shut_down.wait()
|
||||
|
@ -656,13 +656,13 @@ class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):
|
|||
class WebSocketRequestHandler(CGIHTTPServer.CGIHTTPRequestHandler):
|
||||
"""CGIHTTPRequestHandler specialized for WebSocket."""
|
||||
|
||||
# Use httplib.HTTPMessage instead of mimetools.Message.
|
||||
MessageClass = httplib.HTTPMessage
|
||||
# Use http_client.HTTPMessage instead of mimetools.Message.
|
||||
MessageClass = http_client.HTTPMessage
|
||||
|
||||
protocol_version = "HTTP/1.1"
|
||||
|
||||
def setup(self):
|
||||
"""Override SocketServer.StreamRequestHandler.setup to wrap rfile
|
||||
"""Override socketserver.StreamRequestHandler.setup to wrap rfile
|
||||
with MemorizingFile.
|
||||
|
||||
This method will be called by BaseRequestHandler's constructor
|
||||
|
@ -673,7 +673,7 @@ class WebSocketRequestHandler(CGIHTTPServer.CGIHTTPRequestHandler):
|
|||
"""
|
||||
|
||||
# Call superclass's setup to prepare rfile, wfile, etc. See setup
|
||||
# definition on the root class SocketServer.StreamRequestHandler to
|
||||
# definition on the root class socketserver.StreamRequestHandler to
|
||||
# understand what this does.
|
||||
CGIHTTPServer.CGIHTTPRequestHandler.setup(self)
|
||||
|
||||
|
@ -735,7 +735,7 @@ class WebSocketRequestHandler(CGIHTTPServer.CGIHTTPRequestHandler):
|
|||
|
||||
# Special paths for XMLHttpRequest benchmark
|
||||
xhr_benchmark_helper_prefix = '/073be001e10950692ccbf3a2ad21c245'
|
||||
parsed_path = urlparse.urlsplit(self.path)
|
||||
parsed_path = urllib.parse.urlsplit(self.path)
|
||||
if parsed_path.path == (xhr_benchmark_helper_prefix + '_send'):
|
||||
xhr_benchmark_handler = XHRBenchmarkHandler(
|
||||
self.headers, self.rfile, self.wfile)
|
||||
|
@ -795,7 +795,7 @@ class WebSocketRequestHandler(CGIHTTPServer.CGIHTTPRequestHandler):
|
|||
self.path)
|
||||
self._logger.info('Fallback to CGIHTTPRequestHandler')
|
||||
return True
|
||||
except dispatch.DispatchException, e:
|
||||
except dispatch.DispatchException as e:
|
||||
self._logger.info('Dispatch failed for error: %s', e)
|
||||
self.send_error(e.status)
|
||||
return False
|
||||
|
@ -811,14 +811,14 @@ class WebSocketRequestHandler(CGIHTTPServer.CGIHTTPRequestHandler):
|
|||
self._options.dispatcher,
|
||||
allowDraft75=self._options.allow_draft75,
|
||||
strict=self._options.strict)
|
||||
except handshake.VersionException, e:
|
||||
except handshake.VersionException as e:
|
||||
self._logger.info('Handshake failed for version error: %s', e)
|
||||
self.send_response(common.HTTP_STATUS_BAD_REQUEST)
|
||||
self.send_header(common.SEC_WEBSOCKET_VERSION_HEADER,
|
||||
e.supported_versions)
|
||||
self.end_headers()
|
||||
return False
|
||||
except handshake.HandshakeException, e:
|
||||
except handshake.HandshakeException as e:
|
||||
# Handshake for ws(s) failed.
|
||||
self._logger.info('Handshake failed for error: %s', e)
|
||||
self.send_error(e.status)
|
||||
|
@ -826,7 +826,7 @@ class WebSocketRequestHandler(CGIHTTPServer.CGIHTTPRequestHandler):
|
|||
|
||||
request._dispatcher = self._options.dispatcher
|
||||
self._options.dispatcher.transfer_data(request)
|
||||
except handshake.AbortedByUserException, e:
|
||||
except handshake.AbortedByUserException as e:
|
||||
self._logger.info('Aborted: %s', e)
|
||||
return False
|
||||
|
||||
|
@ -1067,14 +1067,14 @@ def _parse_args_and_config(args):
|
|||
if temporary_options.config_file:
|
||||
try:
|
||||
config_fp = open(temporary_options.config_file, 'r')
|
||||
except IOError, e:
|
||||
except IOError as e:
|
||||
logging.critical(
|
||||
'Failed to open configuration file %r: %r',
|
||||
temporary_options.config_file,
|
||||
e)
|
||||
sys.exit(1)
|
||||
|
||||
config_parser = ConfigParser.SafeConfigParser()
|
||||
config_parser = configparser.SafeConfigParser()
|
||||
config_parser.readfp(config_fp)
|
||||
config_fp.close()
|
||||
|
||||
|
@ -1195,7 +1195,7 @@ def _main(args=None):
|
|||
|
||||
server = WebSocketServer(options)
|
||||
server.serve_forever()
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
logging.critical('mod_pywebsocket: %s' % e)
|
||||
logging.critical('mod_pywebsocket: %s' % util.get_stack_trace())
|
||||
sys.exit(1)
|
||||
|
|
|
@ -47,7 +47,7 @@ except ImportError:
|
|||
md5_hash = md5.md5
|
||||
sha1_hash = sha.sha
|
||||
|
||||
import StringIO
|
||||
from six.moves import StringIO
|
||||
import logging
|
||||
import os
|
||||
import re
|
||||
|
@ -68,7 +68,7 @@ def get_stack_trace():
|
|||
TODO: Remove this when we only support Python 2.4 and above.
|
||||
Use traceback.format_exc instead.
|
||||
"""
|
||||
out = StringIO.StringIO()
|
||||
out = StringIO()
|
||||
traceback.print_exc(file=out)
|
||||
return out.getvalue()
|
||||
|
||||
|
|
|
@ -61,7 +61,7 @@ class XHRBenchmarkHandler(object):
|
|||
bytes_to_send = request_array[0]
|
||||
try:
|
||||
bytes_to_send = int(bytes_to_send)
|
||||
except ValueError, e:
|
||||
except ValueError as e:
|
||||
self._logger.debug('Malformed size parameter: %r', bytes_to_send)
|
||||
return
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue