summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRajesh Joseph <rjoseph@redhat.com>2014-01-15 02:22:44 -0800
committerGerrit Code Review <review@dev.gluster.org>2014-01-15 02:22:44 -0800
commit6cb4c91339e5e6452bbb3de6d5f2e75c50d687bc (patch)
tree109e598f2ec2ebeca7cc242887b722d2ac77c09d
parentbcb31ded62545c52e69fbcb79ffdc927d8a9b5f2 (diff)
parentbae3b86cc44adb43fb70f674da1d9e31c60bba96 (diff)
Merge "protocol/server: copy the response into the payload instead of using the pointer" into development
-rw-r--r--rpc/rpc-transport/socket/src/socket.c1
-rw-r--r--xlators/protocol/server/src/server-helpers.c7
-rw-r--r--xlators/protocol/server/src/server.h2
3 files changed, 7 insertions, 3 deletions
diff --git a/rpc/rpc-transport/socket/src/socket.c b/rpc/rpc-transport/socket/src/socket.c
index 93da3f296..3314c92d4 100644
--- a/rpc/rpc-transport/socket/src/socket.c
+++ b/rpc/rpc-transport/socket/src/socket.c
@@ -3138,6 +3138,7 @@ socket_submit_reply (rpc_transport_t *this, rpc_transport_reply_t *reply)
}
priv->submit_log = 0;
+
entry = __socket_ioq_new (this, &reply->msg);
if (!entry)
goto unlock;
diff --git a/xlators/protocol/server/src/server-helpers.c b/xlators/protocol/server/src/server-helpers.c
index 12951a798..a4055f1b8 100644
--- a/xlators/protocol/server/src/server-helpers.c
+++ b/xlators/protocol/server/src/server-helpers.c
@@ -964,7 +964,7 @@ gf_barrier_transmit (server_conf_t *conf, gf_barrier_payload_t *payload)
if (client)
lk_heal = ((server_conf_t *) client->this->private)->lk_heal;
- ret = rpcsvc_submit_generic (payload->req, payload->rsp, 1,
+ ret = rpcsvc_submit_generic (payload->req, &payload->rsp, 1,
payload->payload, payload->payload_count,
payload->iobref);
iobuf_unref (payload->iob);
@@ -1240,6 +1240,9 @@ gf_barrier_payload (rpcsvc_request_t *req, struct iovec *rsp,
{
gf_barrier_payload_t *payload = NULL;
+ if (!rsp)
+ return NULL;
+
payload = GF_CALLOC (1, sizeof (*payload),1);
if (!payload)
return NULL;
@@ -1247,7 +1250,7 @@ gf_barrier_payload (rpcsvc_request_t *req, struct iovec *rsp,
INIT_LIST_HEAD (&payload->list);
payload->req = req;
- payload->rsp = rsp;
+ memcpy (&payload->rsp, rsp, sizeof (struct iovec));
payload->frame = frame;
payload->payload = payload_orig;
payload->payload_count = payloadcount;
diff --git a/xlators/protocol/server/src/server.h b/xlators/protocol/server/src/server.h
index 82554aee9..165058ec3 100644
--- a/xlators/protocol/server/src/server.h
+++ b/xlators/protocol/server/src/server.h
@@ -30,7 +30,7 @@
struct _gf_barrier_payload {
rpcsvc_request_t *req;
- struct iovec *rsp;
+ struct iovec rsp;
call_frame_t *frame;
struct iovec *payload;
struct iobref *iobref;