From cea49e714b65864b0240db4bc0f59aaf53002255 Mon Sep 17 00:00:00 2001 From: Chris Boden Date: Sat, 16 Jun 2012 12:20:14 -0400 Subject: [PATCH] [WebSocket] RFC Fragmentation AB tests 5.* passing Refs #13 --- src/Ratchet/WebSocket/Version/RFC6455.php | 8 ++++++++ src/Ratchet/WebSocket/Version/RFC6455/Message.php | 9 ++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/Ratchet/WebSocket/Version/RFC6455.php b/src/Ratchet/WebSocket/Version/RFC6455.php index 41473b1..b3e47d9 100644 --- a/src/Ratchet/WebSocket/Version/RFC6455.php +++ b/src/Ratchet/WebSocket/Version/RFC6455.php @@ -130,6 +130,14 @@ class RFC6455 implements VersionInterface { $overflow = $from->WebSocket->frame->extractOverflow(); + if ($frame::OP_CONTINUE == $frame->getOpcode() && 0 == count($from->WebSocket->message)) { + return $from->close($frame::CLOSE_PROTOCOL); + } + + if (count($from->WebSocket->message) > 0 && $frame::OP_CONTINUE != $frame->getOpcode()) { + return $from->close($frame::CLOSE_PROTOCOL); + } + $from->WebSocket->message->addFrame($from->WebSocket->frame); unset($from->WebSocket->frame); } diff --git a/src/Ratchet/WebSocket/Version/RFC6455/Message.php b/src/Ratchet/WebSocket/Version/RFC6455/Message.php index 14b3c9b..e1c0593 100644 --- a/src/Ratchet/WebSocket/Version/RFC6455/Message.php +++ b/src/Ratchet/WebSocket/Version/RFC6455/Message.php @@ -3,7 +3,7 @@ namespace Ratchet\WebSocket\Version\RFC6455; use Ratchet\WebSocket\Version\MessageInterface; use Ratchet\WebSocket\Version\FrameInterface; -class Message implements MessageInterface { +class Message implements MessageInterface, \Countable { /** * @var SplDoublyLinkedList */ @@ -13,6 +13,13 @@ class Message implements MessageInterface { $this->_frames = new \SplDoublyLinkedList; } + /** + * {@inheritdoc} + */ + public function count() { + return count($this->_frames); + } + /** * {@inheritdoc} */