Merge pull request #1997 from matrix-org/dbkr/cas_partialdownload

Handle PartialDownloadError in CAS login
This commit is contained in:
David Baker 2017-03-15 13:52:34 +00:00 committed by GitHub
commit 0ad44acb5a

View File

@ -34,6 +34,8 @@ from saml2.client import Saml2Client
import xml.etree.ElementTree as ET import xml.etree.ElementTree as ET
from twisted.web.client import PartialDownloadError
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -417,7 +419,12 @@ class CasTicketServlet(ClientV1RestServlet):
"ticket": request.args["ticket"], "ticket": request.args["ticket"],
"service": self.cas_service_url "service": self.cas_service_url
} }
body = yield http_client.get_raw(uri, args) try:
body = yield http_client.get_raw(uri, args)
except PartialDownloadError as pde:
# Twisted raises this error if the connection is closed,
# even if that's being used old-http style to signal end-of-data
body = pde.response
result = yield self.handle_cas_response(request, body, client_redirect_url) result = yield self.handle_cas_response(request, body, client_redirect_url)
defer.returnValue(result) defer.returnValue(result)