summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/lib/messages.c10
-rw-r--r--source3/printing/notify.c18
2 files changed, 13 insertions, 15 deletions
diff --git a/source3/lib/messages.c b/source3/lib/messages.c
index 30056de716..479a6952a6 100644
--- a/source3/lib/messages.c
+++ b/source3/lib/messages.c
@@ -872,14 +872,4 @@ NTSTATUS messaging_send_buf(struct messaging_context *msg_ctx,
return messaging_send(msg_ctx, server, msg_type, &blob);
}
-NTSTATUS messaging_send_buf_with_timeout(struct messaging_context *msg_ctx,
- struct server_id server,
- uint32_t msg_type,
- const uint8 *buf, size_t len,
- int timeout)
-{
- return message_send_pid_internal(server, msg_type, buf, len,
- True, timeout);
-}
-
/** @} **/
diff --git a/source3/printing/notify.c b/source3/printing/notify.c
index 1285ca23a8..37ae003783 100644
--- a/source3/printing/notify.c
+++ b/source3/printing/notify.c
@@ -126,6 +126,7 @@ static void print_notify_send_messages_to_printer(struct messaging_context *msg_
size_t num_pids = 0;
size_t i;
pid_t *pid_list = NULL;
+ struct timeval end_time = timeval_zero();
/* Count the space needed to send the messages. */
for (pq = notify_queue_head; pq; pq = pq->next) {
@@ -177,6 +178,10 @@ static void print_notify_send_messages_to_printer(struct messaging_context *msg_
if (!print_notify_pid_list(printer, send_ctx, &num_pids, &pid_list))
return;
+ if (timeout != 0) {
+ end_time = timeval_current_ofs(timeout, 0);
+ }
+
for (i = 0; i < num_pids; i++) {
unsigned int q_len = messages_pending_for_pid(pid_to_procid(pid_list[i]));
if (q_len > 1000) {
@@ -184,11 +189,14 @@ static void print_notify_send_messages_to_printer(struct messaging_context *msg_
printer, q_len ));
continue;
}
- messaging_send_buf_with_timeout(msg_ctx,
- pid_to_procid(pid_list[i]),
- MSG_PRINTER_NOTIFY2,
- (uint8 *)buf, offset,
- timeout);
+ messaging_send_buf(msg_ctx,
+ pid_to_procid(pid_list[i]),
+ MSG_PRINTER_NOTIFY2,
+ (uint8 *)buf, offset);
+
+ if ((timeout != 0) && timeval_expired(&end_time)) {
+ break;
+ }
}
}