Skip to content

Commit

Permalink
#2149 / #853: fix websocket handler with python3: don't use flush() o…
Browse files Browse the repository at this point in the history
…r close(), 'only_upgrade' attribute lives in websocket handler (so can't be used in do_HEAD of http handler), websocket handler now delegates to superclass methods rather than duplicating some of the code

git-svn-id: https://xpra.org/svn/Xpra/trunk@21737 3bb7dfac-3a0b-4e04-842a-767bc560f471
  • Loading branch information
totaam committed Feb 20, 2019
1 parent 9cd5d08 commit 964fdfc
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 22 deletions.
21 changes: 9 additions & 12 deletions src/xpra/net/websockets/handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,16 +56,13 @@ def handle_websocket(self):
):
self.wfile.write(b"%s\r\n" % upgrade_string)
self.wfile.flush()
self.wfile.close()
self.new_websocket_client(self)

def do_GET(self):
upgrade_requested = (self.headers.get('upgrade') or "").lower() == 'websocket'
if self.only_upgrade or upgrade_requested:
if not upgrade_requested:
self.send_error(403, "only websocket connections are allowed")
self.wfile.flush()
self.wfile.close()
return
try:
self.handle_websocket()
Expand All @@ -74,17 +71,17 @@ def do_GET(self):
log.error("Error: cannot handle websocket upgrade:")
log.error(" %s", e)
self.send_error(403, "failed to handle websocket: %s" % e)
self.wfile.flush()
self.wfile.close()
return
self.handle_request()
HTTPRequestHandler.do_GET(self)

def do_HEAD(self):
if self.only_upgrade:
self.send_error(405, "Method Not Allowed")
return
HTTPRequestHandler.do_HEAD(self)

def handle_request(self):
if self.only_upgrade:
self.send_error(405, "Method Not Allowed")
else:
content = self.send_head()
if content:
self.wfile.write(content)
self.wfile.flush()
self.wfile.close()
return
HTTPRequestHandler.handle_request(self)
11 changes: 1 addition & 10 deletions src/xpra/server/http_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,16 +183,9 @@ def handle_request(self):
content = self.send_head()
if content:
self.wfile.write(content)
self.wfile.flush()
self.wfile.close()

def do_HEAD(self):
if self.only_upgrade:
self.send_error(405, "Method Not Allowed")
else:
self.send_head()
self.wfile.flush()
self.wfile.close()
self.send_head()

#code taken from MIT licensed code in GzipSimpleHTTPServer.py
def send_head(self):
Expand All @@ -206,8 +199,6 @@ def send_head(self):
path = self.translate_path(self.path)
if not path:
self.send_error(404, "Path not found")
self.wfile.flush()
self.wfile.close()
return None
if os.path.isdir(path):
if not path.endswith('/'):
Expand Down

0 comments on commit 964fdfc

Please sign in to comment.