xref: /netbsd-src/external/ibm-public/postfix/dist/src/global/timed_ipc.c (revision e89934bbf778a6d6d6894877c4da59d0c7835b0f)
1 /*	$NetBSD: timed_ipc.c,v 1.2 2017/02/14 01:16:45 christos Exp $	*/
2 
3 /*++
4 /* NAME
5 /*	timed_ipc 3
6 /* SUMMARY
7 /*	enforce IPC timeout on stream
8 /* SYNOPSIS
9 /*	#include <time_ipc.h>
10 /*
11 /*	void	timed_ipc_setup(stream)
12 /*	VSTREAM	*stream;
13 /* DESCRIPTION
14 /*	timed_ipc() enforces on the specified stream the timeout as
15 /*	specified via the \fIipc_timeout\fR configuration parameter:
16 /*	a read or write operation fails if it does not succeed within
17 /*	\fIipc_timeout\fR seconds. This deadline exists as a safety
18 /*	measure for communication between mail subsystem programs,
19 /*	and should never be exceeded.
20 /* DIAGNOSTICS
21 /*	Panic: sanity check failed. Fatal error: deadline exceeded.
22 /* LICENSE
23 /* .ad
24 /* .fi
25 /*	The Secure Mailer license must be distributed with this software.
26 /* AUTHOR(S)
27 /*	Wietse Venema
28 /*	IBM T.J. Watson Research
29 /*	P.O. Box 704
30 /*	Yorktown Heights, NY 10598, USA
31 /*--*/
32 
33 /* System library. */
34 
35 #include <sys_defs.h>
36 
37 /* Utility library. */
38 
39 #include <msg.h>
40 #include <vstream.h>
41 
42 /* Global library. */
43 
44 #include "mail_params.h"
45 #include "timed_ipc.h"
46 
47 /* timed_ipc_setup - enable ipc with timeout */
48 
timed_ipc_setup(VSTREAM * stream)49 void    timed_ipc_setup(VSTREAM *stream)
50 {
51     if (var_ipc_timeout <= 0)
52 	msg_panic("timed_ipc_setup: bad ipc_timeout %d", var_ipc_timeout);
53 
54     vstream_control(stream,
55 		    CA_VSTREAM_CTL_TIMEOUT(var_ipc_timeout),
56 		    CA_VSTREAM_CTL_END);
57 }
58