diff options
Diffstat (limited to 'source3')
| -rw-r--r-- | source3/lib/ctdbd_conn.c | 15 | 
1 files changed, 11 insertions, 4 deletions
diff --git a/source3/lib/ctdbd_conn.c b/source3/lib/ctdbd_conn.c index 5c3b7c1f4f..e0bdbd05a5 100644 --- a/source3/lib/ctdbd_conn.c +++ b/source3/lib/ctdbd_conn.c @@ -938,18 +938,25 @@ bool ctdb_processes_exist(struct ctdbd_connection *conn,  	for (i=0; i<num_pids; i++) {  		struct ctdb_req_control req; +		pid_t pid;  		results[i] = false;  		reqids[i] = ctdbd_next_reqid(conn);  		ZERO_STRUCT(req); +		/* +		 * pids[i].pid is uint64_t, scale down to pid_t which +		 * is the wire protocol towards ctdb. +		 */ +		pid = pids[i].pid; +  		DEBUG(10, ("Requesting PID %d/%d, reqid=%d\n", -			   (int)pids[i].vnn, (int)pids[i].pid, +			   (int)pids[i].vnn, (int)pid,  			   (int)reqids[i]));  		req.hdr.length = offsetof(struct ctdb_req_control, data); -		req.hdr.length += sizeof(pid_t); +		req.hdr.length += sizeof(pid);  		req.hdr.ctdb_magic   = CTDB_MAGIC;  		req.hdr.ctdb_version = CTDB_VERSION;  		req.hdr.operation    = CTDB_REQ_CONTROL; @@ -957,7 +964,7 @@ bool ctdb_processes_exist(struct ctdbd_connection *conn,  		req.hdr.destnode     = pids[i].vnn;  		req.opcode           = CTDB_CONTROL_PROCESS_EXISTS;  		req.srvid            = 0; -		req.datalen          = sizeof(pids[i].pid); +		req.datalen          = sizeof(pid);  		req.flags            = 0;  		DEBUG(10, ("ctdbd_control: Sending ctdb packet\n")); @@ -967,7 +974,7 @@ bool ctdb_processes_exist(struct ctdbd_connection *conn,  			conn->pkt, 2,  			data_blob_const(  				&req, offsetof(struct ctdb_req_control, data)), -			data_blob_const(&pids[i].pid, sizeof(pids[i].pid))); +			data_blob_const(&pid, sizeof(pid)));  		if (!NT_STATUS_IS_OK(status)) {  			DEBUG(10, ("ctdb_packet_send failed: %s\n",  				   nt_errstr(status)));  | 
