liudf0716 / xfrpc

The xfrpc project is a lightweight implementation of the FRP client written in C language for OpenWRT and IoT systems. It is designed to provide an efficient solution for resource-constrained devices such as OpenWRT routers and IoT devices, which often have limited ROM and RAM space.
GNU General Public License v3.0
719 stars 90 forks source link

Web上上传任意文件都会触发tcpmux逻辑退出 #5

Closed gzliurc closed 1 year ago

gzliurc commented 1 year ago

xfrpc是个很好的项目,最近测试时发现了一些问题

tcp通道访问网页时,网页访问都是正常的,但任何上传文件的操作都会导致xfrpc崩溃 错误提示 [6][Thu Oct 27 10:59:05 2022]29122 !!!!!type is DATA but cant find stream_id : type [data] flag [zero] stream_id[0]

这里的逻辑直接return 0的话,上传可以完成,但会导致后续请求死循环 [6][Thu Oct 27 10:52:25 2022]27907 enc_msg length should not be 0

服务端版本是frps 0.42.0

liudf0716 commented 1 year ago

谢谢反馈! 目前正在重构tcp mux协议部分。

liudf0716 commented 1 year ago

@gzliurc 最新代码问题已解决,谢谢!

gzliurc commented 1 year ago

测试可以正常上传文件了,不过发现个问题,主干代码有明显内存泄漏,每个请求都会让内存快速增长

liudf0716 commented 1 year ago

@gzliurc 每个tmux stream的读写缓存都是32k,后面会优化一下。谢谢反馈!

gzliurc commented 1 year ago

内存从开始的3M,每次刷新页面会有20个请求,内存很快就会突破10M,每次刷新大概增加6、7M,刷新几次后程序就无法响应,应该不是缓存问题