]> git.sesse.net Git - casparcg/commitdiff
Merged bug fix mentioned in http://casparcg.com/forum/viewtopic.php?f=3&t=2480
authorHelge Norberg <helge.norberg@gmail.com>
Thu, 26 Jun 2014 11:35:06 +0000 (13:35 +0200)
committerHelge Norberg <helge.norberg@gmail.com>
Thu, 26 Jun 2014 11:35:06 +0000 (13:35 +0200)
Previously AMCP commands split into multiple TCP packets where not correctly parsed.

protocol/amcp/AMCPProtocolStrategy.cpp

index d3bda841abeaeeed548a0ad42b16d8d9e11e6bc0..bbd4728050ce0736a82f720a4be712cbabdbb469 100644 (file)
@@ -96,7 +96,11 @@ void AMCPProtocolStrategy::Parse(const TCHAR* pData, int charCount, ClientInfoPt
        pClientInfo->currentMessage_.append(pData, charCount);\r
 \r
        while(true) {\r
-               pos = pClientInfo->currentMessage_.find(MessageDelimiter, (oldLength>(MessageDelimiter.size()-1)) ? oldLength-(MessageDelimiter.size()-1) : 0);\r
+               pos = pClientInfo->currentMessage_.find(\r
+                               MessageDelimiter,\r
+                               oldLength > MessageDelimiter.size() - 1\r
+                                               ? oldLength - (MessageDelimiter.size() - 1)\r
+                                               : 0);\r
                if(pos != std::wstring::npos)\r
                {\r
                        std::wstring message = pClientInfo->currentMessage_.substr(0,pos);\r
@@ -108,8 +112,12 @@ void AMCPProtocolStrategy::Parse(const TCHAR* pData, int charCount, ClientInfoPt
 \r
                        std::size_t nextStartPos = pos + MessageDelimiter.length();\r
                        if(nextStartPos < pClientInfo->currentMessage_.length())\r
+                       {\r
                                pClientInfo->currentMessage_ = pClientInfo->currentMessage_.substr(nextStartPos);\r
-                       else {\r
+                               oldLength = 0;\r
+                       }\r
+                       else\r
+                       {\r
                                pClientInfo->currentMessage_.clear();\r
                                break;\r
                        }\r