1/*++
2/* NAME
3/*	deliver_completed 3
4/* SUMMARY
5/*	recipient delivery completion
6/* SYNOPSIS
7/*	#include <deliver_completed.h>
8/*
9/*	void	deliver_completed(stream, offset)
10/*	VSTREAM	*stream;
11/*	long	offset;
12/* DESCRIPTION
13/*	deliver_completed() crosses off the specified recipient from
14/*	an open queue file. A -1 offset means ignore the request -
15/*	this is used for delivery requests that are passed on from
16/*	one delivery agent to another.
17/* DIAGNOSTICS
18/*	Fatal error: unable to update the queue file.
19/* LICENSE
20/* .ad
21/* .fi
22/*	The Secure Mailer license must be distributed with this software.
23/* AUTHOR(S)
24/*	Wietse Venema
25/*	IBM T.J. Watson Research
26/*	P.O. Box 704
27/*	Yorktown Heights, NY 10598, USA
28/*--*/
29
30/* System library. */
31
32#include <sys_defs.h>
33
34/* Utility library. */
35
36#include <msg.h>
37#include <vstream.h>
38
39/* Global library. */
40
41#include "record.h"
42#include "rec_type.h"
43#include "deliver_completed.h"
44
45/* deliver_completed - handle per-recipient delivery completion */
46
47void    deliver_completed(VSTREAM *stream, long offset)
48{
49    const char *myname = "deliver_completed";
50
51    if (offset == -1)
52	return;
53
54    if (offset <= 0)
55	msg_panic("%s: bad offset %ld", myname, offset);
56
57    if (rec_put_type(stream, REC_TYPE_DONE, offset) < 0
58	|| vstream_fflush(stream))
59	msg_fatal("update queue file %s: %m", VSTREAM_PATH(stream));
60}
61