Closed zdzh closed 1 year ago
I'll check it out later
func (r *Request) askExtraInfo(builder *flatbuffers.Builder,
infoType ei.Info, info flatbuffers.UOffsetT) ([]byte, error) {
......
ty := header[0]
header[0] = 0
length := binary.BigEndian.Uint32(header)
log.Infof("receive rpc type: %d data length: %d", ty, length)
buf := make([]byte, length)
n, err = c.Read(buf)
if util.ReadErr(n, err, int(length)) {
return nil, common.ErrConnClosed
}
....
}
这里从conn读取数据的时候有可能没有读取完全,需要循环读取
var tmp int
for n < length {
tmp, err = c.Read(buf[n:])
if err != nil {
break
}
n += tmp
}
func (r *Request) askExtraInfo(builder *flatbuffers.Builder, infoType ei.Info, info flatbuffers.UOffsetT) ([]byte, error) { ...... ty := header[0] header[0] = 0 length := binary.BigEndian.Uint32(header) log.Infof("receive rpc type: %d data length: %d", ty, length) buf := make([]byte, length) n, err = c.Read(buf) if util.ReadErr(n, err, int(length)) { return nil, common.ErrConnClosed } .... }
这里从conn读取数据的时候有可能没有读取完全,需要循环读取
var tmp int for n < length { tmp, err = c.Read(buf[n:]) if err != nil { break } n += tmp }
This is read in a loop.
for n < length
@zdzh Looks like it's buggy, would you be interested in submiting a PR to fix it?
@spacewander Please assign to me.
@zdzh This issue has been solved by #124 .
Issue description
我用request.Body来获取请求的body,但是当请求请求体过大时,该函数会提示获取失败,数据被截断。
Environment
uname -a
):Linux fefcfe0549f3 4.18.0 #1 SMP Tue Sep 27 10:33:52 CST 2022 x86_64 x86_64 x86_64 GNU/Linux
Minimal test code / Steps to reproduce the issue
构造一个足够大的body,然后在go-runner中通过req.Body获取body
What's the actual result? (including assertion message & call stack if applicable)
传入的body首先提示存入一个临时文件,然后在调用req.Body时获取body失败,提示被截断。 觉得是存入临时文件的数据没有正确传递给go-runner,但是在ext-plugin/init.lua查看body的长度好像没问题
What's the expected result?
获取body成功