From 59725ebc2daa3fe0eecd51729c3eae76220a29ce Mon Sep 17 00:00:00 2001 From: Chris Boden Date: Thu, 12 Jul 2012 15:41:30 -0400 Subject: [PATCH] mbstring no longer required for Ratchet --- Version/RFC6455.php | 10 +++++++++- Version/RFC6455/Frame.php | 2 +- Version/RFC6455/HandshakeVerifier.php | 4 ++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/Version/RFC6455.php b/Version/RFC6455.php index 1252666..4e89bb7 100644 --- a/Version/RFC6455.php +++ b/Version/RFC6455.php @@ -53,9 +53,17 @@ class RFC6455 implements VersionInterface { */ private $closeCodes = array(); + /** + * Lookup if mbstring is available + * @var bool + */ + private $hasMbString = false; + public function __construct() { $this->_verifier = new HandshakeVerifier; $this->setCloseCodes(); + + $this->hasMbString = extension_loaded('mbstring'); } /** @@ -292,7 +300,7 @@ class RFC6455 implements VersionInterface { * @return bool */ function isUtf8($str) { - if (false === mb_check_encoding($str, 'UTF-8')) { + if ($this->hasMbString && false === mb_check_encoding($str, 'UTF-8')) { return false; } diff --git a/Version/RFC6455/Frame.php b/Version/RFC6455/Frame.php index 5ff8330..93cc68f 100644 --- a/Version/RFC6455/Frame.php +++ b/Version/RFC6455/Frame.php @@ -231,7 +231,7 @@ class Frame implements FrameInterface { throw new \InvalidArgumentException("Masking key must be " . static::MASK_LENGTH ." characters"); } - if (!mb_check_encoding($maskingKey, 'US-ASCII')) { + if (extension_loaded('mbstring') && true !== mb_check_encoding($maskingKey, 'US-ASCII')) { throw new \InvalidArgumentException("Masking key MUST be ASCII"); } diff --git a/Version/RFC6455/HandshakeVerifier.php b/Version/RFC6455/HandshakeVerifier.php index 93d7928..19b9a94 100644 --- a/Version/RFC6455/HandshakeVerifier.php +++ b/Version/RFC6455/HandshakeVerifier.php @@ -59,6 +59,10 @@ class HandshakeVerifier { return false; } + if (!extension_loaded('mbstring')) { + return true; + } + return mb_check_encoding($val, 'US-ASCII'); }