diff --git a/IPython/html/terminal/handlers.py b/IPython/html/terminal/handlers.py
index 20dfd2c..b0e2e4f 100644
--- a/IPython/html/terminal/handlers.py
+++ b/IPython/html/terminal/handlers.py
@@ -3,6 +3,7 @@
# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
+import tornado
from tornado import web
import terminado
from ..base.handlers import IPythonHandler
@@ -25,4 +26,18 @@ class TermSocket(terminado.TermSocket, IPythonHandler):
def get(self, *args, **kwargs):
if not self.get_current_user():
raise web.HTTPError(403)
- return super(TermSocket, self).get(*args, **kwargs)
+
+ # FIXME: only do super get on tornado ≥ 4
+ # tornado 3 has no get, will raise 405
+ if tornado.version_info >= (4,):
+ return super(TermSocket, self).get(*args, **kwargs)
+
+ def open(self, *args, **kwargs):
+ if tornado.version_info < (4,):
+ try:
+ self.get(*self.open_args, **self.open_kwargs)
+ except web.HTTPError:
+ self.close()
+ raise
+
+ super(TermSocket, self).open(*args, **kwargs)