diff options
author | Volker Lendecke <vl@samba.org> | 2011-10-26 10:56:32 +0200 |
---|---|---|
committer | Volker Lendecke <vlendec@samba.org> | 2011-10-27 20:28:31 +0200 |
commit | 2cf1347211aab592437af81af312026151e578dd (patch) | |
tree | a369e06c0faa8f1d963b93e0618eba8c0e2fb883 /source3 | |
parent | e5231a5976c67573f7883538cc5b76db724f8d57 (diff) | |
download | samba-2cf1347211aab592437af81af312026151e578dd.tar.gz samba-2cf1347211aab592437af81af312026151e578dd.tar.bz2 samba-2cf1347211aab592437af81af312026151e578dd.zip |
s3-ctdb: Don't hand out 0 as reqid
0 will be used as a wildcard reqid in ctdb_read_req
Diffstat (limited to 'source3')
-rw-r--r-- | source3/lib/ctdbd_conn.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/source3/lib/ctdbd_conn.c b/source3/lib/ctdbd_conn.c index 6e6c466128..d4786659d0 100644 --- a/source3/lib/ctdbd_conn.c +++ b/source3/lib/ctdbd_conn.c @@ -62,6 +62,15 @@ struct ctdbd_connection { void *release_ip_priv; }; +static uint32_t ctdbd_next_reqid(struct ctdbd_connection *conn) +{ + conn->reqid += 1; + if (conn->reqid == 0) { + conn->reqid += 1; + } + return conn->reqid; +} + static NTSTATUS ctdbd_control(struct ctdbd_connection *conn, uint32_t vnn, uint32 opcode, uint64_t srvid, uint32_t flags, TDB_DATA data, @@ -833,7 +842,7 @@ static NTSTATUS ctdbd_control(struct ctdbd_connection *conn, req.hdr.ctdb_magic = CTDB_MAGIC; req.hdr.ctdb_version = CTDB_VERSION; req.hdr.operation = CTDB_REQ_CONTROL; - req.hdr.reqid = ++conn->reqid; + req.hdr.reqid = ctdbd_next_reqid(conn); req.hdr.destnode = vnn; req.opcode = opcode; req.srvid = srvid; @@ -1016,7 +1025,7 @@ NTSTATUS ctdbd_migrate(struct ctdbd_connection *conn, uint32 db_id, req.hdr.ctdb_magic = CTDB_MAGIC; req.hdr.ctdb_version = CTDB_VERSION; req.hdr.operation = CTDB_REQ_CALL; - req.hdr.reqid = ++conn->reqid; + req.hdr.reqid = ctdbd_next_reqid(conn); req.flags = CTDB_IMMEDIATE_MIGRATION; req.callid = CTDB_NULL_FUNC; req.db_id = db_id; @@ -1078,7 +1087,7 @@ NTSTATUS ctdbd_fetch(struct ctdbd_connection *conn, uint32 db_id, req.hdr.ctdb_magic = CTDB_MAGIC; req.hdr.ctdb_version = CTDB_VERSION; req.hdr.operation = CTDB_REQ_CALL; - req.hdr.reqid = ++conn->reqid; + req.hdr.reqid = ctdbd_next_reqid(conn); req.flags = 0; req.callid = CTDB_FETCH_FUNC; req.db_id = db_id; @@ -1225,7 +1234,7 @@ NTSTATUS ctdbd_traverse(uint32 db_id, t.db_id = db_id; t.srvid = conn->rand_srvid; - t.reqid = ++conn->reqid; + t.reqid = ctdbd_next_reqid(conn); data.dptr = (uint8_t *)&t; data.dsize = sizeof(t); |