diff options
Diffstat (limited to 'rpc')
| -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 9f005d91dd2..feccd40540e 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 4de24cad153..c59410f4c0d 100644 --- a/rpc/rpc-transport/rdma/src/rdma.c +++ b/rpc/rpc-transport/rdma/src/rdma.c @@ -3046,7 +3046,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, @@ -3177,7 +3178,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);          }  | 
