修复大量与websocket和回落相关的bug;

修复 websocket时无回落的问题
修复 websocket不匹配时直接返回内部错误字符串导致 可探测 的超级bug
修复回落不匹配问题
修复websocket时readv闪退问题

修复 命令行 loglevel参数被配置文件覆盖问题
修复获取tls 的 alpn和 sni时遇到空指针闪退问题

将默认fallback地址的赋值放到通用代码中;
移除 ErrSingleFallback, 改用utils.ErrFirstBuffer
使ws的server可以返回 预设的path
This commit is contained in:
hahahrfool
2022-03-24 13:42:34 +08:00
parent 363f0fac00
commit 146f7cf926
20 changed files with 414 additions and 215 deletions

View File

@@ -92,7 +92,26 @@ func TryCopy(writeConn io.Writer, readConn io.Reader) (allnum int64, err error)
num, err2 = multiWriter.WriteBuffers(buffers)
} else {
num, err2 = buffers.WriteTo(writeConn)
//num, err2 = buffers.WriteTo(writeConn)
// 实测发现这里不能直接使用 buffers.WriteTo, 因为它会修改buffer本身
// 而我们为了缓存,是不能允许篡改的
// 所以我们在确保 writeConn 不是 基本连接后, 要 自行write
if IsBasicConn(writeConn) {
num, err2 = buffers.WriteTo(writeConn)
} else {
for _, b := range buffers {
nb, err := writeConn.Write(b)
num += int64(nb)
if err != nil {
err2 = err
break
}
}
}
}
allnum += num