diff options
author | 2018-01-15 09:59:29 -0800 | |
---|---|---|
committer | 2018-01-15 09:59:29 -0800 | |
commit | 584dd87c70e29abc373f88be52bd2eee287ecace (patch) | |
tree | 6b4ac5286a5345c796071e4e9f7a9e6fce47a5ca /vendor/google.golang.org/grpc/codec.go | |
parent | d699b89063843d81cee35f128aaef9881439151f (diff) | |
download | coredns-584dd87c70e29abc373f88be52bd2eee287ecace.tar.gz coredns-584dd87c70e29abc373f88be52bd2eee287ecace.tar.zst coredns-584dd87c70e29abc373f88be52bd2eee287ecace.zip |
Add route53 plugin (#1390)
* Update vendor
Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
* Add route53 plugin
This fix adds route53 plugin so that it is possible to
query route53 record through CoreDNS.
Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
Diffstat (limited to 'vendor/google.golang.org/grpc/codec.go')
-rw-r--r-- | vendor/google.golang.org/grpc/codec.go | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/vendor/google.golang.org/grpc/codec.go b/vendor/google.golang.org/grpc/codec.go index b452a4ae8..43d81ed2a 100644 --- a/vendor/google.golang.org/grpc/codec.go +++ b/vendor/google.golang.org/grpc/codec.go @@ -69,6 +69,11 @@ func (p protoCodec) marshal(v interface{}, cb *cachedProtoBuffer) ([]byte, error } func (p protoCodec) Marshal(v interface{}) ([]byte, error) { + if pm, ok := v.(proto.Marshaler); ok { + // object can marshal itself, no need for buffer + return pm.Marshal() + } + cb := protoBufferPool.Get().(*cachedProtoBuffer) out, err := p.marshal(v, cb) @@ -79,10 +84,17 @@ func (p protoCodec) Marshal(v interface{}) ([]byte, error) { } func (p protoCodec) Unmarshal(data []byte, v interface{}) error { + protoMsg := v.(proto.Message) + protoMsg.Reset() + + if pu, ok := protoMsg.(proto.Unmarshaler); ok { + // object can unmarshal itself, no need for buffer + return pu.Unmarshal(data) + } + cb := protoBufferPool.Get().(*cachedProtoBuffer) cb.SetBuf(data) - v.(proto.Message).Reset() - err := cb.Unmarshal(v.(proto.Message)) + err := cb.Unmarshal(protoMsg) cb.SetBuf(nil) protoBufferPool.Put(cb) return err |