添加readv功能;给出测试数据;修订代码,注释;

toml 新增 app.noreadv项,命令行参数新增 -readv

默认readv是打开状态,可以选择性关闭。
This commit is contained in:
hahahrfool
2022-03-22 14:12:32 +08:00
parent e75860ef7a
commit 5661c8737f
18 changed files with 715 additions and 51 deletions

21
main.go
View File

@@ -694,24 +694,35 @@ afterLocalServerHandshake:
}
if theFallbackFirstBuffer != nil {
//这里注意,因为是tls解密了之后的数据发送到目标地址所以这种方式只支持转发到本机纯http服务器
//这里注意,因为是tls解密了之后的数据发送到目标地址所以这种方式只支持转发到本机纯http服务器
wrc.Write(theFallbackFirstBuffer.Bytes())
utils.PutBytes(theFallbackFirstBuffer.Bytes()) //这个Buf不是从utils.GetBuf创建的而是从一个 GetBytes的[]byte 包装 的所以我们要PutBytes而不是PutBuf
}
if utils.CanLogDebug() {
/*
go func() {
n, e := io.Copy(wrc, wlc)
log.Println("本地->远程 转发结束", realTargetAddr.String(), n, e)
}()
n, e := io.Copy(wlc, wrc)
log.Println("远程->本地 转发结束", realTargetAddr.String(), n, e)
*/
go func() {
n, e := io.Copy(wrc, wlc)
n, e := netLayer.TryCopy(wrc, wlc)
log.Println("本地->远程 转发结束", realTargetAddr.String(), n, e)
}()
n, e := io.Copy(wlc, wrc)
n, e := netLayer.TryCopy(wlc, wrc)
log.Println("远程->本地 转发结束", realTargetAddr.String(), n, e)
} else {
//如果两个都是 *net.TCPConn或uds, 则Copy会自动进行splice/sendfile无需额外处理
go io.Copy(wrc, wlc)
io.Copy(wlc, wrc)
//go io.Copy(wrc, wlc)
//io.Copy(wlc, wrc)
netLayer.Relay(wlc, wrc)
}
}