summaryrefslogtreecommitdiffstats
path: root/module/lib/mod_pywebsocket/dispatch.py
diff options
context:
space:
mode:
Diffstat (limited to 'module/lib/mod_pywebsocket/dispatch.py')
-rw-r--r--module/lib/mod_pywebsocket/dispatch.py16
1 files changed, 11 insertions, 5 deletions
diff --git a/module/lib/mod_pywebsocket/dispatch.py b/module/lib/mod_pywebsocket/dispatch.py
index ab1eb4fb3..25905f180 100644
--- a/module/lib/mod_pywebsocket/dispatch.py
+++ b/module/lib/mod_pywebsocket/dispatch.py
@@ -39,6 +39,7 @@ import re
from mod_pywebsocket import common
from mod_pywebsocket import handshake
from mod_pywebsocket import msgutil
+from mod_pywebsocket import mux
from mod_pywebsocket import stream
from mod_pywebsocket import util
@@ -277,13 +278,18 @@ class Dispatcher(object):
AbortedByUserException: when user handler abort connection
"""
- handler_suite = self.get_handler_suite(request.ws_resource)
- if handler_suite is None:
- raise DispatchException('No handler for: %r' % request.ws_resource)
- transfer_data_ = handler_suite.transfer_data
# TODO(tyoshino): Terminate underlying TCP connection if possible.
try:
- transfer_data_(request)
+ if mux.use_mux(request):
+ mux.start(request, self)
+ else:
+ handler_suite = self.get_handler_suite(request.ws_resource)
+ if handler_suite is None:
+ raise DispatchException('No handler for: %r' %
+ request.ws_resource)
+ transfer_data_ = handler_suite.transfer_data
+ transfer_data_(request)
+
if not request.server_terminated:
request.ws_stream.close_connection()
# Catch non-critical exceptions the handler didn't handle.