Skip to content

Commit a2db36d

Browse files
committed
腾讯玩一玩,非标准的websocket协议引擎解析不兼容问题
kbengine#623
1 parent 2fb6353 commit a2db36d

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

kbe/src/lib/common/strutil.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ namespace strutil {
8686
return s;
8787
}
8888

89-
9089
std::string kbe_trim(std::string s)
9190
{
9291
return kbe_ltrim(kbe_rtrim(s));

kbe/src/lib/network/websocket_protocol.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,12 +99,18 @@ bool WebSocketProtocol::handshake(Network::Channel* pChannel, MemoryStream* s)
9999
values = KBEngine::strutil::kbe_splits(header_and_data[0], "\r\n");
100100
std::vector<std::string>::iterator iter = values.begin();
101101

102-
for(; iter != values.end(); ++iter)
102+
for (; iter != values.end(); ++iter)
103103
{
104-
header_and_data = KBEngine::strutil::kbe_splits((*iter), ": ");
104+
std::string linedata = (*iter);
105105

106-
if(header_and_data.size() == 2)
107-
headers[header_and_data[0]] = header_and_data[1];
106+
std::string::size_type findex = linedata.find_first_of(':', 0);
107+
if (findex == std::string::npos)
108+
continue;
109+
110+
std::string leftstr = linedata.substr(0, findex);
111+
std::string rightstr = linedata.substr(findex + 1, linedata.size() - findex);
112+
113+
headers[KBEngine::strutil::kbe_trim(leftstr)] = KBEngine::strutil::kbe_trim(rightstr);
108114
}
109115

110116
std::string szKey, szOrigin, szHost;

0 commit comments

Comments
 (0)