diff --git a/rpc.go b/rpc.go index d9ff31a..16e34d0 100644 --- a/rpc.go +++ b/rpc.go @@ -5,6 +5,7 @@ import ( "encoding/json" "io" "net/http" + "net/textproto" "strconv" "strings" @@ -119,6 +120,13 @@ func (h *rpcHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { } // fill contex with http headers md["Host"] = r.Host + md["Method"] = r.Method + // get canonical headers + for k, _ := range r.Header { + // may be need to get all values for key like r.Header.Values() provide in go 1.14 + md[textproto.CanonicalMIMEHeaderKey(k)] = r.Header.Get(k) + } + // merge context with overwrite cx = metadata.MergeContext(cx, md, true) @@ -384,8 +392,6 @@ func requestPayload(r *http.Request) ([]byte, error) { } if b := buf.Bytes(); len(b) > 0 { bodybuf = b - } else { - return []byte{}, nil } if bodydst == "" || bodydst == "*" { if out, err = jsonpatch.MergeMergePatches(out, bodybuf); err == nil {