From 4d5bc1e4e3622265ef7dc54281c0f73bb4dd98d6 Mon Sep 17 00:00:00 2001 From: liris Date: Wed, 28 Oct 2015 09:16:39 +0900 Subject: [PATCH] fixed #215 --- ChangeLog | 1 + websocket/_handshake.py | 13 ++++++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index c07a53f..43b5152 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,7 @@ ChangeLog - 0.34.0 - Change import style (#203) + - fix attribute error on the older python. (#215) - 0.33.0 diff --git a/websocket/_handshake.py b/websocket/_handshake.py index 4d0f028..146ea58 100644 --- a/websocket/_handshake.py +++ b/websocket/_handshake.py @@ -40,6 +40,12 @@ from ._exceptions import * __all__ = ["handshake_response", "handshake"] +if hasattr(hmac, "compare_digest"): + compare_digest = hmac.compare_digest +else: + def compare_digest(s1, s2): + return s1 == s2 + # websocket supported version. VERSION = 13 @@ -99,7 +105,7 @@ def _get_handshake_headers(resource, host, port, options): if isinstance(header, dict): header = map(": ".join, header.items()) headers.extend(header) - + cookie = options.get("cookie", None) if cookie: @@ -149,10 +155,7 @@ def _validate(headers, key, subprotocols): value = (key + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11").encode('utf-8') hashed = base64encode(hashlib.sha1(value).digest()).strip().lower() - if sys.version_info[0] == 2 and sys.version_info[1] < 7: - success = (hashed == result) - else: - success = hmac.compare_digest(hashed, result) + success = compare_digest(hashed, result) if success: return True, subproto