From ec065e92eef038f95996833ea6eb7a746e9912bd Mon Sep 17 00:00:00 2001 From: Tim Abbott Date: Fri, 2 Nov 2018 16:09:16 -0700 Subject: [PATCH] tornado: Store port on SockJS connection object. This will make it available for use inside our websockets code. --- zerver/management/commands/runtornado.py | 2 +- zerver/tests/test_tornado.py | 4 ++-- zerver/tornado/application.py | 4 ++-- zerver/tornado/socket.py | 3 ++- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/zerver/management/commands/runtornado.py b/zerver/management/commands/runtornado.py index 77fa25ddcc..c33ae010af 100644 --- a/zerver/management/commands/runtornado.py +++ b/zerver/management/commands/runtornado.py @@ -95,7 +95,7 @@ class Command(BaseCommand): try: # Application is an instance of Django's standard wsgi handler. - application = create_tornado_application() + application = create_tornado_application(int(port)) if settings.AUTORELOAD: zulip_autoreload_start() diff --git a/zerver/tests/test_tornado.py b/zerver/tests/test_tornado.py index 30c35c14c1..ddfd098607 100644 --- a/zerver/tests/test_tornado.py +++ b/zerver/tests/test_tornado.py @@ -53,7 +53,7 @@ class TornadoWebTestCase(AsyncHTTPTestCase, ZulipTestCase): @override_settings(DEBUG=False) def get_app(self) -> Application: - return create_tornado_application() + return create_tornado_application(9993) def client_get(self, path: str, **kwargs: Any) -> HTTPResponse: self.add_session_cookie(kwargs) @@ -171,7 +171,7 @@ class TornadoTestCase(WebSocketBaseTestCase): def get_app(self) -> Application: """ Return tornado app to launch for test cases """ - return create_tornado_application() + return create_tornado_application(9993) @staticmethod def tornado_call(view_func: Callable[[HttpRequest, UserProfile], HttpResponse], diff --git a/zerver/tornado/application.py b/zerver/tornado/application.py index e7c14defa9..504d44cdf6 100644 --- a/zerver/tornado/application.py +++ b/zerver/tornado/application.py @@ -17,7 +17,7 @@ def setup_tornado_rabbitmq() -> None: # nocoverage atexit.register(lambda: queue_client.close()) autoreload.add_reload_hook(lambda: queue_client.close()) -def create_tornado_application() -> tornado.web.Application: +def create_tornado_application(port: int) -> tornado.web.Application: urls = ( r"/notify_tornado", r"/json/events", @@ -27,7 +27,7 @@ def create_tornado_application() -> tornado.web.Application: # Application is an instance of Django's standard wsgi handler. return tornado.web.Application(([(url, AsyncDjangoHandler) for url in urls] + - get_sockjs_router().urls), + get_sockjs_router(port).urls), debug=settings.DEBUG, autoreload=False, # Disable Tornado's own request logging, since we have our own diff --git a/zerver/tornado/socket.py b/zerver/tornado/socket.py index 810f9dd575..9f29622bd8 100644 --- a/zerver/tornado/socket.py +++ b/zerver/tornado/socket.py @@ -275,5 +275,6 @@ sockjs_url = '%s/static/third/sockjs/sockjs-0.3.4.js' % (settings.ROOT_DOMAIN_UR sockjs_router = sockjs.tornado.SockJSRouter(SocketConnection, "/sockjs", {'sockjs_url': sockjs_url, 'disabled_transports': ['eventsource', 'htmlfile']}) -def get_sockjs_router() -> sockjs.tornado.SockJSRouter: +def get_sockjs_router(port: int) -> sockjs.tornado.SockJSRouter: + sockjs_router._connection.port = port return sockjs_router