Factor out window bits value validation code into a separate function.
Release note: n/a
Review URL: https://codereview.appspot.com/7643044
diff --git a/src/mod_pywebsocket/extensions.py b/src/mod_pywebsocket/extensions.py
index 8a388a6..eb846b8 100644
--- a/src/mod_pywebsocket/extensions.py
+++ b/src/mod_pywebsocket/extensions.py
@@ -136,6 +136,17 @@
(ratio, average_ratio))
+def _validate_window_bits(bits):
+ if bits is not None:
+ try:
+ bits = int(bits)
+ except ValueError, e:
+ return False
+ if bits < 8 or bits > 15:
+ return False
+ return True
+
+
class DeflateFrameExtensionProcessor(ExtensionProcessorInterface):
"""WebSocket Per-frame DEFLATE extension processor.
@@ -181,13 +192,8 @@
self._NO_CONTEXT_TAKEOVER_PARAM) is not None):
return None
- if window_bits is not None:
- try:
- window_bits = int(window_bits)
- except ValueError, e:
- return None
- if window_bits < 8 or window_bits > 15:
- return None
+ if not _validate_window_bits(window_bits):
+ return None
self._deflater = util._RFC1979Deflater(
window_bits, no_context_takeover)
@@ -476,13 +482,8 @@
s2c_max_window_bits = self._request.get_parameter_value(
self._S2C_MAX_WINDOW_BITS_PARAM)
- if s2c_max_window_bits is not None:
- try:
- s2c_max_window_bits = int(s2c_max_window_bits)
- except ValueError, e:
- return None
- if s2c_max_window_bits < 8 or s2c_max_window_bits > 15:
- return None
+ if not _validate_window_bits(s2c_max_window_bits):
+ return None
s2c_no_context_takeover = self._request.has_parameter(
self._S2C_NO_CONTEXT_TAKEOVER_PARAM)