Commit 18dbbc8d by dengjfzh Committed by GitHub

降低TCP RTP 2字节头被误判为EHOME头的风险 (#2502)

当TCP RTP包大小为256字节时,可能触发RtpSplitter::onSearchPacketTail误判为EHOME格式。
这个修改一旦检测到数据不是EHOME格式,则后续不再进行尝试,以减小误判的风险。
parent 032a2ac9
...@@ -46,17 +46,20 @@ const char *RtpSplitter::onSearchPacketTail(const char *data, size_t len) { ...@@ -46,17 +46,20 @@ const char *RtpSplitter::onSearchPacketTail(const char *data, size_t len) {
return nullptr; return nullptr;
} }
if (isEhome(data, len)) { if ( _is_ehome ) {
//是ehome协议 if (isEhome(data, len)) {
if (len < kEHOME_OFFSET + 4) { //是ehome协议
//数据不够 if (len < kEHOME_OFFSET + 4) {
return nullptr; //数据不够
return nullptr;
}
//忽略ehome私有头后是rtsp样式的rtp,多4个字节,
_offset = kEHOME_OFFSET + 4;
_is_ehome = true;
//忽略ehome私有头
return onSearchPacketTail_l(data + kEHOME_OFFSET + 2, len - kEHOME_OFFSET - 2);
} }
//忽略ehome私有头后是rtsp样式的rtp,多4个字节, _is_ehome = false;
_offset = kEHOME_OFFSET + 4;
_is_ehome = true;
//忽略ehome私有头
return onSearchPacketTail_l(data + kEHOME_OFFSET + 2, len - kEHOME_OFFSET - 2);
} }
if ( _is_rtsp_interleaved ) { if ( _is_rtsp_interleaved ) {
......
...@@ -35,7 +35,7 @@ protected: ...@@ -35,7 +35,7 @@ protected:
const char *onSearchPacketTail_l(const char *data, size_t len); const char *onSearchPacketTail_l(const char *data, size_t len);
private: private:
bool _is_ehome = false; bool _is_ehome = true;
bool _is_rtsp_interleaved = true; bool _is_rtsp_interleaved = true;
size_t _offset = 0; size_t _offset = 0;
}; };
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论