From cacd241223dc670ffbfaa3595ca1c1c21badc6f9 Mon Sep 17 00:00:00 2001 From: xiongziliang <771730766@qq.com> Date: Sat, 29 Sep 2018 14:54:49 +0800 Subject: [PATCH] 修复websock相关bug --- src/Http/HttpsSession.h | 3 ++- src/Http/WebSocketSplitter.cpp | 6 +++--- src/Http/WebSocketSplitter.h | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/Http/HttpsSession.h b/src/Http/HttpsSession.h index 251c34b..de26c2b 100644 --- a/src/Http/HttpsSession.h +++ b/src/Http/HttpsSession.h @@ -101,9 +101,10 @@ public: } //每隔一段时间触发,用来做超时管理 void onManager() override{ - HttpSessionType::onManager(); if(_session){ _session->onManager(); + }else{ + HttpSessionType::onManager(); } } diff --git a/src/Http/WebSocketSplitter.cpp b/src/Http/WebSocketSplitter.cpp index 25589e4..3a02681 100644 --- a/src/Http/WebSocketSplitter.cpp +++ b/src/Http/WebSocketSplitter.cpp @@ -163,7 +163,7 @@ void WebSocketSplitter::onPlayloadData(uint8_t *ptr, uint64_t len) { onWebSocketDecodePlayload(*this, _mask_flag ? ptr - len : ptr, len, _playload_offset); } -void WebSocketSplitter::encode(const WebSocketHeader &header,uint8_t *data, uint64_t len) { +void WebSocketSplitter::encode(const WebSocketHeader &header,uint8_t *data, const uint64_t len) { string ret; uint8_t byte = header._fin << 7 | ((header._reserved & 0x07) << 4) | (header._opcode & 0x0F) ; @@ -179,8 +179,8 @@ void WebSocketSplitter::encode(const WebSocketHeader &header,uint8_t *data, uint byte |= 126; ret.push_back(byte); - uint16_t len = htons(len); - ret.append((char *)&len,2); + auto len_low = htons(len); + ret.append((char *)&len_low,2); }else{ byte |= 127; ret.push_back(byte); diff --git a/src/Http/WebSocketSplitter.h b/src/Http/WebSocketSplitter.h index 37150b4..ef8bf9e 100644 --- a/src/Http/WebSocketSplitter.h +++ b/src/Http/WebSocketSplitter.h @@ -91,7 +91,7 @@ public: * @param data 负载数据 * @param len 负载数据长度 */ - void encode(const WebSocketHeader &header,uint8_t *data,uint64_t len); + void encode(const WebSocketHeader &header,uint8_t *data,const uint64_t len); protected: /** * 收到一个webSocket数据包包头,后续将继续触发onWebSocketDecodePlayload回调 -- libgit2 0.26.0