Skip to content

Commit

Permalink
chore: use new md
Browse files Browse the repository at this point in the history
Signed-off-by: Valery Piashchynski <piashchynski.valery@gmail.com>
  • Loading branch information
rustatian committed Sep 9, 2024
1 parent 0664203 commit 375ca44
Showing 1 changed file with 17 additions and 6 deletions.
23 changes: 17 additions & 6 deletions proxy/proxy.go
Original file line number Diff line number Diff line change
Expand Up @@ -221,19 +221,30 @@ func (p *Proxy) responseMetadata(resp *payload.Payload) (metadata.MD, error) {
}

if len(rpcMetadata) > 0 {
// new meta should be used
mdn := metadata.New(map[string]string{})
// old meta should not be used in response
md = metadata.New(rpcMetadata)

if len(md.Get(headers)) > 0 {
mdh := metadata.New(make(map[string]string))
mdh := make(map[string]any)
err = json.Unmarshal([]byte(md.Get(headers)[0]), &mdh)
if err != nil {
// we don't need to return this error, log it
p.log.Error("error unmarshalling headers", zap.Error(err))
goto api
}

// join with the main metadata
md = metadata.Join(md, mdh)
for k, v := range mdh {
switch tt := v.(type) {
case string:
mdn.Append(k, tt)
case int:
mdn.Append(k, strconv.Itoa(tt))
default:
p.log.Warn("skipping header with unsupported type", zap.String("key", k), zap.Any("value", v))
}
}
}

/*
Expand All @@ -249,15 +260,15 @@ func (p *Proxy) responseMetadata(resp *payload.Payload) (metadata.MD, error) {
// get an error
data, err := base64.StdEncoding.DecodeString(md.Get(apiErr)[0])
if err != nil {
return nil, err
return mdn, err
}

err = proto.Unmarshal(data, st)
if err != nil {
return nil, err
return mdn, err
}

return md, status.ErrorProto(st)
return mdn, status.ErrorProto(st)
}
}

Expand Down

0 comments on commit 375ca44

Please sign in to comment.