You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/06/07 02:42:36 UTC
[dubbo-go] branch 3.0 updated: Fix: URL serialization bug (#1238)
This is an automated email from the ASF dual-hosted git repository.
alexstocks pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo-go.git
The following commit(s) were added to refs/heads/3.0 by this push:
new 16d8297 Fix: URL serialization bug (#1238)
16d8297 is described below
commit 16d8297b5d06c1a289fcd8a78d817087d3c248d4
Author: XavierNiu <a...@nxw.name>
AuthorDate: Mon Jun 7 10:42:29 2021 +0800
Fix: URL serialization bug (#1238)
* unittests for DubboCodec
* fix serializing url bug and add error handling
* gofmt
---
common/url.go | 5 ++++
protocol/dubbo/hessian2/hessian_response.go | 37 ++++++++++++++++++++++-------
2 files changed, 33 insertions(+), 9 deletions(-)
diff --git a/common/url.go b/common/url.go
index 07bda8e..65d1748 100644
--- a/common/url.go
+++ b/common/url.go
@@ -125,6 +125,11 @@ type URL struct {
SubURL *URL
}
+// JavaClassName POJO for URL
+func (c *URL) JavaClassName() string {
+ return "org.apache.dubbo.common.URL"
+}
+
// Option accepts URL
// Option will define a function of handling URL
type Option func(*URL)
diff --git a/protocol/dubbo/hessian2/hessian_response.go b/protocol/dubbo/hessian2/hessian_response.go
index b0070a6..47dc866 100644
--- a/protocol/dubbo/hessian2/hessian_response.go
+++ b/protocol/dubbo/hessian2/hessian_response.go
@@ -111,30 +111,49 @@ func packResponse(header DubboHeader, ret interface{}) ([]byte, error) {
}
if response.Exception != nil { // throw error
- _ = encoder.Encode(resWithException)
+ err := encoder.Encode(resWithException)
+ if err != nil {
+ return nil, perrors.Errorf("encoding response failed: %v", err)
+ }
if t, ok := response.Exception.(java_exception.Throwabler); ok {
- _ = encoder.Encode(t)
+ err = encoder.Encode(t)
} else {
- _ = encoder.Encode(java_exception.NewThrowable(response.Exception.Error()))
+ err = encoder.Encode(java_exception.NewThrowable(response.Exception.Error()))
+ }
+ if err != nil {
+ return nil, perrors.Errorf("encoding exception failed: %v", err)
}
} else {
if response.RspObj == nil {
- _ = encoder.Encode(resNullValue)
+ if err := encoder.Encode(resNullValue); err != nil {
+ return nil, perrors.Errorf("encoding null value failed: %v", err)
+ }
} else {
- _ = encoder.Encode(resValue)
- _ = encoder.Encode(response.RspObj) // result
+ if err := encoder.Encode(resValue); err != nil {
+ return nil, perrors.Errorf("encoding response value failed: %v", err)
+ }
+ if err := encoder.Encode(response.RspObj); err != nil {
+ return nil, perrors.Errorf("encoding response failed: %v", err)
+ }
}
}
+ // attachments
if atta {
- _ = encoder.Encode(response.Attachments) // attachments
+ if err := encoder.Encode(response.Attachments); err != nil {
+ return nil, perrors.Errorf("encoding response attachements failed: %v", err)
+ }
}
}
} else {
+ var err error
if response.Exception != nil { // throw error
- _ = encoder.Encode(response.Exception.Error())
+ err = encoder.Encode(response.Exception.Error())
} else {
- _ = encoder.Encode(response.RspObj)
+ err = encoder.Encode(response.RspObj)
+ }
+ if err != nil {
+ return nil, perrors.Errorf("encoding error failed: %v", err)
}
}