Changeset - 1048a0f202b8
[Not reviewed]
0 1 0
Jan Kaluza - 10 years ago 2015-12-04 22:01:50
jkaluza@redhat.com
Workaround for bug in slack websocket implementation
1 file changed with 8 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/WebSocketClient.cpp
Show inline comments
 
@@ -145,24 +145,32 @@ void WebSocketClient::handleDataRead(boost::shared_ptr<Swift::SafeByteArray> dat
 
			LOG4CXX_INFO(logger, "MASK: " << (int) mask);
 
			if (size7 == 126) {
 
				if (m_buffer.size() >= 4) {
 
					size16 = *((uint16_t *) &m_buffer[2]);
 
					size16 = ntohs(size16);
 
					header_size += 2;
 
				}
 
				else {
 
					return;
 
				}
 
			}
 

	
 
			// This seems to be Slack bug... sometimes we receive 0x89 followed by 0x81
 
			// For now, in that case we will just ignore the 0x89 and skip it...
 
			if (opcode == 9 && mask && size7 == 1) {
 
				LOG4CXX_WARN(logger, "Applying Slack workaround because of partial data received from server");
 
				m_buffer.erase(0, 1);
 
				continue;
 
			}
 

	
 
// 			if (opcode == 9) {
 
// 				write("");
 
// 			}
 

	
 
			unsigned int size = (size16 == 0 ? size7 : size16);
 
			if (m_buffer.size() >= size + header_size) {
 
				std::string payload = m_buffer.substr(header_size, size);
 
				LOG4CXX_INFO(logger, "< " << payload);
 
				onPayloadReceived(payload);
 
				m_buffer.erase(0, size + header_size);
 
				
 
			}
0 comments (0 inline, 0 general)