diff --git a/call.go b/call.go
index 3cc8f1f..f29396a 100644
--- a/call.go
+++ b/call.go
@@ -81,7 +81,11 @@
 			}
 		}
 	}()
-	outBuf, err := encode(codec, args, compressor, new(bytes.Buffer))
+	var cbuf *bytes.Buffer
+	if compressor != nil {
+		cbuf = new(bytes.Buffer)
+	}
+	outBuf, err := encode(codec, args, compressor, cbuf)
 	if err != nil {
 		return nil, transport.StreamErrorf(codes.Internal, "grpc: %v", err)
 	}
diff --git a/server.go b/server.go
index e846f3b..a7ff16c 100644
--- a/server.go
+++ b/server.go
@@ -303,7 +303,11 @@
 }
 
 func (s *Server) sendResponse(t transport.ServerTransport, stream *transport.Stream, msg interface{}, cp Compressor, opts *transport.Options) error {
-	p, err := encode(s.opts.codec, msg, cp, new(bytes.Buffer))
+	var cbuf *bytes.Buffer
+	if cp != nil {
+		cbuf = new(bytes.Buffer)
+	}
+	p, err := encode(s.opts.codec, msg, cp, cbuf)
 	if err != nil {
 		// This typically indicates a fatal issue (e.g., memory
 		// corruption or hardware faults) the application program
@@ -457,6 +461,9 @@
 		dg:     s.opts.dg,
 		trInfo: trInfo,
 	}
+	if cp != nil {
+		ss.cbuf = new(bytes.Buffer)
+	}
 	if trInfo != nil {
 		trInfo.tr.LazyLog(&trInfo.firstLine, false)
 		defer func() {
diff --git a/stream.go b/stream.go
index 1a8d0e4..63f934d 100644
--- a/stream.go
+++ b/stream.go
@@ -124,6 +124,10 @@
 		dg:      cc.dopts.dg,
 		tracing: EnableTracing,
 	}
+	if cp != nil {
+		callHdr.SendCompress = cp.Type()
+		cs.cbuf = new(bytes.Buffer)
+	}
 	if cs.tracing {
 		cs.trInfo.tr = trace.New("grpc.Sent."+methodFamily(method), method)
 		cs.trInfo.firstLine.client = true
@@ -164,7 +168,7 @@
 	desc  *StreamDesc
 	codec Codec
 	cp    Compressor
-	cbuf  bytes.Buffer
+	cbuf  *bytes.Buffer
 	dg    DecompressorGenerator
 
 	tracing bool // set to EnableTracing when the clientStream is created.
@@ -211,8 +215,12 @@
 		}
 		err = toRPCErr(err)
 	}()
-	out, err := encode(cs.codec, m, cs.cp, &cs.cbuf)
-	defer cs.cbuf.Reset()
+	out, err := encode(cs.codec, m, cs.cp, cs.cbuf)
+	defer func() {
+		if cs.cbuf != nil {
+			cs.cbuf.Reset()
+		}
+	}()
 	if err != nil {
 		return transport.StreamErrorf(codes.Internal, "grpc: %v", err)
 	}
@@ -326,7 +334,7 @@
 	codec      Codec
 	cp         Compressor
 	dg         DecompressorGenerator
-	cbuf       bytes.Buffer
+	cbuf       *bytes.Buffer
 	statusCode codes.Code
 	statusDesc string
 	trInfo     *traceInfo
@@ -365,8 +373,12 @@
 			ss.mu.Unlock()
 		}
 	}()
-	out, err := encode(ss.codec, m, ss.cp, &ss.cbuf)
-	defer ss.cbuf.Reset()
+	out, err := encode(ss.codec, m, ss.cp, ss.cbuf)
+	defer func() {
+		if ss.cbuf != nil {
+			ss.cbuf.Reset()
+		}
+	}()
 	if err != nil {
 		err = transport.StreamErrorf(codes.Internal, "grpc: %v", err)
 		return err
