diff options
| -rw-r--r-- | rpc/rpc-lib/src/rpc-transport.c | 3 | ||||
| -rw-r--r-- | rpc/rpc-transport/rdma/src/rdma.c | 5 | 
2 files changed, 5 insertions, 3 deletions
diff --git a/rpc/rpc-lib/src/rpc-transport.c b/rpc/rpc-lib/src/rpc-transport.c index 3db73f652bb..0ad579bc3d7 100644 --- a/rpc/rpc-lib/src/rpc-transport.c +++ b/rpc/rpc-lib/src/rpc-transport.c @@ -556,7 +556,8 @@ rpc_transport_pollin_alloc (rpc_transport_t *this, struct iovec *vector,          msg->count = count;          msg->iobref = iobref_ref (iobref);          msg->private = private; -        msg->hdr_iobuf = iobuf_ref (hdr_iobuf); +        if (hdr_iobuf) +                msg->hdr_iobuf = iobuf_ref (hdr_iobuf);  out:          return msg; diff --git a/rpc/rpc-transport/rdma/src/rdma.c b/rpc/rpc-transport/rdma/src/rdma.c index c0b7e7bf27f..fa2eb9e0512 100644 --- a/rpc/rpc-transport/rdma/src/rdma.c +++ b/rpc/rpc-transport/rdma/src/rdma.c @@ -3047,7 +3047,8 @@ rdma_pollin_notify (rdma_peer_t *peer, rdma_post_t *post)                   * because of server sending entire msg as inline without                   * doing rdma writes.                   */ -                iobref_add (post->ctx.iobref, post->ctx.hdr_iobuf); +                if (post->ctx.hdr_iobuf) +                        iobref_add (post->ctx.iobref, post->ctx.hdr_iobuf);          }          pollin = rpc_transport_pollin_alloc (peer->trans, @@ -3178,7 +3179,7 @@ rdma_recv_reply (rdma_peer_t *peer, rdma_post_t *post)          }          ctx = rpc_req->conn_private; -        if (post->ctx.iobref == NULL) { +        if ((post->ctx.iobref == NULL) && ctx->rsp_iobref) {                  post->ctx.iobref = iobref_ref (ctx->rsp_iobref);          }  | 
