Compare commits

...

4 Commits

Author SHA1 Message Date
e88f524042 fix handler context metadata passing
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-03-01 13:02:35 +03:00
45670661d0 write all passed header in response
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2021-03-01 11:35:27 +03:00
Renovate Bot
f7ed037633 Update golang.org/x/net commit hash to e18ecbb 2021-02-26 21:33:25 +00:00
Renovate Bot
8f36e1753a Update golang.org/x/net commit hash to 39120d0 2021-02-26 12:26:48 +00:00
3 changed files with 21 additions and 7 deletions

2
go.mod
View File

@@ -4,7 +4,7 @@ go 1.13
require (
github.com/unistack-org/micro/v3 v3.2.14
golang.org/x/net v0.0.0-20210224082022-3d97a244fca7
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110
)
//replace github.com/unistack-org/micro/v3 => ../../micro

4
go.sum
View File

@@ -19,6 +19,10 @@ github.com/unistack-org/micro/v3 v3.2.14/go.mod h1:3j13mSd/rILNjyP0tEVtDxyDkJBtn
golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210224082022-3d97a244fca7 h1:OgUuv8lsRpBibGNbSizVwKWlysjaNzmC9gYMhPVfqFM=
golang.org/x/net v0.0.0-20210224082022-3d97a244fca7/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210226101413-39120d07d75e h1:jIQURUJ9mlLvYwTBtRHm9h58rYhSonLvRvgAnP8Nr7I=
golang.org/x/net v0.0.0-20210226101413-39120d07d75e/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 h1:qWPm9rbaAMKs8Bq/9LRpbMqxWRVUAQwMI9fVrssnTfw=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=

View File

@@ -67,7 +67,7 @@ func (h *httpHandler) Options() server.HandlerOptions {
}
func (h *httpHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
ctx := metadata.NewContext(r.Context(), nil)
defer r.Body.Close()
@@ -187,17 +187,21 @@ func (h *httpHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
var scode int
// define the handler func
fn := func(ctx context.Context, req server.Request, rsp interface{}) (err error) {
ctx = context.WithValue(ctx, rspCodeKey{}, &rspCodeVal{})
ctx = metadata.NewIncomingContext(ctx, md)
returnValues = function.Call([]reflect.Value{hldr.rcvr, hldr.mtype.prepareContext(ctx), reflect.ValueOf(argv.Interface()), reflect.ValueOf(rsp)})
fn := func(fctx context.Context, req server.Request, rsp interface{}) (err error) {
fctx = context.WithValue(fctx, rspCodeKey{}, &rspCodeVal{})
fctx = metadata.NewIncomingContext(fctx, md)
returnValues = function.Call([]reflect.Value{hldr.rcvr, hldr.mtype.prepareContext(fctx), reflect.ValueOf(argv.Interface()), reflect.ValueOf(rsp)})
scode = GetRspCode(ctx)
scode = GetRspCode(fctx)
// The return value for the method is an error.
if rerr := returnValues[0].Interface(); rerr != nil {
err = rerr.(error)
}
if md, ok := metadata.FromOutgoingContext(fctx); ok {
metadata.SetOutgoingContext(ctx, md)
}
return err
}
@@ -224,6 +228,12 @@ func (h *httpHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
return
}
if md, ok := metadata.FromOutgoingContext(ctx); ok {
for k, v := range md {
w.Header().Set(k, v)
}
}
w.Header().Set("content-Type", ct)
if scode != 0 {
w.WriteHeader(scode)