From fd5ed02d7a0b368f5a28390323526286ea203995 Mon Sep 17 00:00:00 2001 From: Griatch Date: Thu, 2 Jun 2016 09:03:18 +0200 Subject: [PATCH] Don't traceback if webclient don't pass the browser session with the wsurl, to make it easier on custom client implementations. --- evennia/server/portal/webclient.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/evennia/server/portal/webclient.py b/evennia/server/portal/webclient.py index d6083e136..98269bace 100644 --- a/evennia/server/portal/webclient.py +++ b/evennia/server/portal/webclient.py @@ -62,13 +62,19 @@ class WebSocketClient(Protocol, Session): """ - self.csessid = self.transport.location.split("?", 1)[1] - csession = _CLIENT_SESSIONS(session_key=self.csessid) - uid = csession and csession.get("logged_in", False) - if uid: - # the client session is already logged in. - self.uid = uid - self.logged_in = True + try: + self.csessid = self.transport.location.split("?", 1)[1] + except IndexError: + # this may happen for custom webclients not caring for the + # browser session. + self.csessid = None + if self.csessid: + csession = _CLIENT_SESSIONS(session_key=self.csessid) + uid = csession and csession.get("logged_in", False) + if uid: + # the client session is already logged in. + self.uid = uid + self.logged_in = True # watch for dead links self.transport.setTcpKeepAlive(1)