You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by sp...@apache.org on 2021/10/09 04:22:30 UTC
[apisix-go-plugin-runner] branch master updated: fix: avoid reusing
nil builder (#42)
This is an automated email from the ASF dual-hosted git repository.
spacewander pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-go-plugin-runner.git
The following commit(s) were added to refs/heads/master by this push:
new 9b2683c fix: avoid reusing nil builder (#42)
9b2683c is described below
commit 9b2683c17dbfe9da02d1a6f795e2760498157179
Author: 罗泽轩 <sp...@gmail.com>
AuthorDate: Sat Oct 9 12:22:25 2021 +0800
fix: avoid reusing nil builder (#42)
---
internal/server/server.go | 26 ++++++++++++++------------
internal/server/server_test.go | 6 ++++--
2 files changed, 18 insertions(+), 14 deletions(-)
diff --git a/internal/server/server.go b/internal/server/server.go
index 48d6da0..6193a11 100644
--- a/internal/server/server.go
+++ b/internal/server/server.go
@@ -70,12 +70,22 @@ func recoverPanic() {
}
}
-func dispatchRPC(ty byte, in []byte, conn net.Conn) (*flatbuffers.Builder, error) {
+func dispatchRPC(ty byte, in []byte, conn net.Conn) *flatbuffers.Builder {
+ var err error
+ var bd *flatbuffers.Builder
hl, ok := typeHandlerMap[ty]
if !ok {
- return nil, UnknownType{ty}
+ err = UnknownType{ty}
+ } else {
+ bd, err = hl(in, conn)
+ }
+
+ if err != nil {
+ bd = generateErrorReport(err)
+ } else {
+ bd = checkIfDataTooLarge(bd)
}
- return hl(in, conn)
+ return bd
}
func checkIfDataTooLarge(bd *flatbuffers.Builder) *flatbuffers.Builder {
@@ -116,15 +126,7 @@ func handleConn(c net.Conn) {
break
}
- bd, err := dispatchRPC(ty, buf, c)
-
- if err != nil {
- util.PutBuilder(bd)
- bd = generateErrorReport(err)
- } else {
- bd = checkIfDataTooLarge(bd)
- }
-
+ bd := dispatchRPC(ty, buf, c)
out := bd.FinishedBytes()
size := len(out)
binary.BigEndian.PutUint32(header, uint32(size))
diff --git a/internal/server/server_test.go b/internal/server/server_test.go
index 606c2cb..9147f75 100644
--- a/internal/server/server_test.go
+++ b/internal/server/server_test.go
@@ -52,8 +52,10 @@ func TestGetConfCacheTTL(t *testing.T) {
}
func TestDispatchRPC_UnknownType(t *testing.T) {
- _, err := dispatchRPC(126, []byte(""), nil)
- assert.Equal(t, UnknownType{126}, err)
+ bd := dispatchRPC(126, []byte(""), nil)
+ err := UnknownType{126}
+ expectBd := ReportError(err)
+ assert.Equal(t, expectBd.FinishedBytes(), bd.FinishedBytes())
}
func TestDispatchRPC_OutTooLarge(t *testing.T) {