summaryrefslogtreecommitdiff
path: root/source3/lib/ctdbd_conn.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/lib/ctdbd_conn.c')
-rw-r--r--source3/lib/ctdbd_conn.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/source3/lib/ctdbd_conn.c b/source3/lib/ctdbd_conn.c
index ffd79c9fe1..84bba3bea3 100644
--- a/source3/lib/ctdbd_conn.c
+++ b/source3/lib/ctdbd_conn.c
@@ -275,6 +275,17 @@ static struct messaging_rec *ctdb_pull_messaging_rec(TALLOC_CTX *mem_ctx,
return result;
}
+static NTSTATUS ctdb_packet_fd_read_sync(struct packet_context *ctx)
+{
+ struct timeval timeout;
+ struct timeval *ptimeout;
+
+ timeout = timeval_set(lp_ctdb_timeout(), 0);
+ ptimeout = (timeout.tv_sec != 0) ? &timeout : NULL;
+
+ return packet_fd_read_sync(ctx, ptimeout);
+}
+
/*
* Read a full ctdbd request. If we have a messaging context, defer incoming
* messages that might come in between.
@@ -289,7 +300,7 @@ static NTSTATUS ctdb_read_req(struct ctdbd_connection *conn, uint32 reqid,
again:
- status = packet_fd_read_sync(conn->pkt);
+ status = ctdb_packet_fd_read_sync(conn->pkt);
if (NT_STATUS_EQUAL(status, NT_STATUS_NETWORK_BUSY)) {
/* EAGAIN */
@@ -1156,7 +1167,7 @@ NTSTATUS ctdbd_traverse(uint32 db_id,
break;
}
- status = packet_fd_read_sync(conn->pkt);
+ status = ctdb_packet_fd_read_sync(conn->pkt);
if (NT_STATUS_EQUAL(status, NT_STATUS_RETRY)) {
/*