diff --git a/client/rpc_codec.go b/client/rpc_codec.go index a71f6a11..c3729be2 100644 --- a/client/rpc_codec.go +++ b/client/rpc_codec.go @@ -186,32 +186,30 @@ func (c *rpcCodec) Write(m *codec.Message, body interface{}) error { // if body is bytes Frame don't encode if body != nil { - b, ok := body.(*raw.Frame) - if ok { + if b, ok := body.(*raw.Frame); ok { // set body m.Body = b.Data - body = nil + } else { + // write to codec + if err := c.codec.Write(m, body); err != nil { + return errors.InternalServerError("go.micro.client.codec", err.Error()) + } + // set body + m.Body = c.buf.wbuf.Bytes() } } - if len(m.Body) == 0 { - // write to codec - if err := c.codec.Write(m, body); err != nil { - return errors.InternalServerError("go.micro.client.codec", err.Error()) - } - // set body - m.Body = c.buf.wbuf.Bytes() - } - // create new transport message msg := transport.Message{ Header: m.Header, Body: m.Body, } + // send the request if err := c.client.Send(&msg); err != nil { return errors.InternalServerError("go.micro.client.transport", err.Error()) } + return nil }